/*
* 测试使用mongoose操作mongodb数据库
*/
const md5 = require('blueimp-md5')
// 1. 连接数据库
// 1.1 引入mongoose
const mongoose = require('mongoose')
// URi
const uri = "mongodb://localhost:27017/recruit_db_test"
// 1.2 连接指定数据库(URL只有数据库是变化的)
mongoose.connect(uri, {useNewUrlParser: true, useUnifiedTopology: true})
// 1.3 获取连接对象
const conn = mongoose.connection
// 1.4 绑定连接完成的监听
conn.on('connected', () => { // 连接成功回调
console.log("数据库连接成功~")
})
// 2. 得到对应特定集合的Model
// 2.1 字义Schema(描述文档结构)
const userSchema = mongoose.Schema({
username: {type: String, required: true}, // 用户名
password: {type: String, required: true}, // 密码
type: {type: String, required: true}, // 类型
header: {type: String} // 头像
})
// 2.2 定义Model(与集合对应,可以操作集合)
const UserModel = mongoose.model('user', userSchema)
// 3. CRUD
// 3.1 通过Model实例的save()添加数据
function testSave() {
const userModel = new UserModel({
username: 'Mark',
password: md5('123'),
type: 'dashen'
})
userModel.save(function (error, user) { // 返回的是一个文档(user)对象
console.log("save()", error, user)
})
}
// testSave()
// 3.2 通过Model的find()/findOne()查询多个或一个数据
function testFind() {
// 查询多个
UserModel.find(function (error, users) {
console.log("find()", error, users)
})
// 查询一个
UserModel.findOne({_id: '5f966aa8ab0ad839b8382e0f'}, function (error, user) {
console.log("findOne()", error, user)
})
}
// testFind()
// 3.3 通过Model的findByIdAndUpdate()更新某个数据
function testUpdate() {
UserModel.findByIdAndUpdate({_id: '5f966ae2230fb4523824bbca'}, {username: 'Jack'}, function (err, oldUser) {
console.log('findByIdAndUpdate()', err, oldUser)
})
}
// testUpdate()
// 3.4 通过Model的remove()删除匹配的数据
function testDelete() {
UserModel.remove({_id: '5f967a859f9eb2404c46b5e2'}, function (err, doc) {
console.log("remove()", err, doc)
})
}
testDelete()