毕设用的koa2,使用mongoose操作mongodb,完成增删查改。
连接数据库
通过MongoClient.connect连接数据库,在回调中会返回db对象以供之后使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| const mongoose = require('mongoose') const config = require('./index') const log4js = require('./../utils/log4j')
mongoose.connect(config.URL,{ useNewUrlParser: true, useUnifiedTopology: true })
const db = mongoose.connection;
db.on('error',()=>{ log4js.error('***Failed to connect mongodb***') })
db.on('open',()=>{ log4js.info('***Succeeded to connect mongodb***') })
|
此处的log4js是在utils/log4j.js中定义的,可以在utils/log4j.js中自行封装。
创建user模型
mongoDB shell中创建的命令为:
1 2
| use demo db.createCollection('user')
|
1 2 3 4 5 6 7 8 9 10
| const mongoose = require("mongoose");
const schema = mongoose.Schema({ "userId" : Number, "userName" : String, "userPwd" : String, "state": Number, });
module.exports = mongoose.model("users", schema);
|
后续操作均在此模型中进行。
添加用户
使用save()方法,需要先实例化为文档,再使用save()方法保存文档。而create()方法,则直接在模型Model上操作,并且可以同时新增多个文档。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| const newUser = new User({ username: 'cedric', password: '123', age: 27 })
let doc = await newUser.save()
let doc = await User.create({ username: 'cedric222', password: '123', age: 27 }, { username: 'cedric333', password: '123', age: 27 })
let doc = await User.insertOne({ username: 'cedric444', password: '123', age: 27 })
let doc = await User.insertMany([ { username: 'cedric555', password: '123', age: 27 }, { username: 'cedric666', password: '123', age: 27 } ])
|
更新用户
1 2 3 4 5 6 7
| let doc = await user.updateOne({age: 27}, {age: 28}, {multi: true})
const result = await user.updateMany( { userId: { $in: userIds }, state: 0 }, { state: 1 } );
|
删除用户
1
| let doc = await User.remove({username: 'cedric444'})
|
查询用户
调用collection的find方法查找用户,find方法的参数为查找条件。
1 2 3 4 5 6 7 8 9
|
let doc = await User.findOne({ username: 'cedric222' })
let doc = await User.find({})
|