项目目录结构如下:
dbs/conf.js
const conf = {
url: "mongodb://localhost:27017/test",
dbName: "test"
}
module.exports = conf;
dbs/models/person.js
const mongoose = require('mongoose');
//定义一个描述表结构的Schema
let personSchema = new mongoose.Schema({ name: String, age: Number })
//把这个 schema 编译成一个 Model,和表联系起来,model 是我们构造 document 的 Class
module.exports = mongoose.model('Person', personSchema)
app.js
const conf=require('./dbs/conf');
...
//连接数据库
mongoose.connect(conf.url,{
useNewUrlParser:true
});
...
routes/users.js
const router = require('koa-router')()
const Person = require('../dbs/models/person')
router.prefix('/users')
router.get('/', function (ctx, next) {
ctx.body = 'this is a users response!'
})
//add
router.post('/addPerson', async function (ctx, next) {
//实例化一个person
const person = new Person({ name: ctx.request.body.name, age: ctx.request.body.age })
let code
try {
//实例调用save()
await person.save()
code = 0
} catch (e) {
code = 1
}
ctx.body = { code: code }
})
// get
router.post('/getPerson', async function (ctx) {
let result;
try {
//Person的静态方法 find
result = await Person.find({ name: ctx.request.body.name })
code = 0
} catch (e) {
code = 1
}
ctx.body = { result: result }
})
//update
router.post('/updatePerson', async function (ctx) {
//Person的静态方法 update
const result = await Person.where({ name: ctx.request.body.name })
.update({ age: ctx.request.body.age })
ctx.body = { result: result }
})
// remove
router.post('/removePerson', async function (ctx) {
//Person的静态方法 remove
const result = await Person.where({ name: ctx.request.body.name })
.remove()
ctx.body = { code: 0 }
})
module.exports = router