启动
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}` }
})