koa

214 阅读1分钟

启动

npm i nodemon
启动命令:npm run serve

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "serve": "nodemon app.js"
},

基本配置

//引入koa
let Koa = require("koa")
const Router = require("koa-router")

//解析post接口
let koaBody = require("koa-body")


let home = require("./router/home")
let user = require("./router/user")


//实例koa 实例router

let app = new Koa()
let router = new Router()



router.use("/home", home)
router.use("/user", user)


app.use(router.routes()).use(router.allowedMethods())
//端口号
app.listen(3001)

数据库key值

module.exports = {
    connectionStr: "mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false"
}

连接数据库

connect() {
    return new Promise((res, rej) => {
        if (this.dbclient == "") {
            mongodb.connect(connectionStr, (err, client) => {
                if (err) {
                    console.log("连接失败")
                    rej("连接失败")
                    return
                }
                console.log("连接成功")
                let db = client.db("koa")
                this.dbclient = db
                res(db)
            })
        } else {
            res(this.dbclient)
        }

    })
}

数据搜索


//bank代表着要连接的,data代表要搜索的数据
 file(bank, data) {
    return new Promise((res, rej) => {
        //调用连接数据库
        this.connect().then(db1 => {
            //连接数据表进行搜索
            let arr = db1.collection(bank).find(data)
            
            arr.toArray((err, obj1) => {
                if (err) {
                    console.log("查找错误")
                    rej("查找错误")
                } else {
                    res({ "data": obj1, "code": 200 })
                }
            })
        })
    })
}

数据添加

//bank代表着要连接的,data代表要添加的数据
insert(bank, data) {
    return new Promise((res, rej) => {
        this.connect().then(db => {
            //连接数据表,添加一条
            db.collection(bank).insertOne(data, (err, obj1) => {
                if (err) {
                    rej(err)
                } else {
                    res(obj1)
                }
            })
        })
    })
}

数据删除

//bank代表着要连接的,data代表要删除的数据
 delelt(bank, data) {
    return new Promise((res, rej) => {
        this.connect().then(db => {
            //连接数据表,删除一条
            db.collection(bank).deleteOne(data, (err, obj) => {
                if (err) {
                    rej(err)
                } else {
                    res({ code: 200, hint: "删除成功" })
                }
            })
        })
    })
}

数据修改

//bank代表着要连接的,data代表要修改的原数据,newdata代表要修改的数据
 update(bank, data, newdata) {
    return new Promise((res, rej) => {
        this.connect().then(db => {
            db.collection(bank)
                .update(data, { $set: newdata }, (err, obj1) => {
                    if (err) {
                        rej(err)
                    } else {
                        res(obj1)
                    }
                })
        })
    })
}

图片上传


let koaBody = require("koa-body")

const KoaStatic = require('koa-static')
app.use(KoaStatic(path.join(__dirname, 'public')))
app.use(koaBody({
    multipart: true,
    formidable: {
        uploadDir: path.join(__dirname, '/public/uploads'),
        keepExtensions: true
    }
}));

router.post("/upload", ctx => {
    console.log(2222)

    const file = ctx.request.files.file;
    const basename = path.basename(file.path);
    ctx.body = { url: `${ctx.origin}/uploads/${basename}` }
})