使用mongoose

1、安装

2、后台文件中创建文件夹db

 3、连接数据库,并检测数据库是否连接成功

const md5 = require('blueimp-md5') // 1. 连接数据库 // 1.1. 引入 mongoose 
const mongoose = require('mongoose') // 1.2. 连接指定数据库(URL 只有数据库是变化的) 

mongoose.connect('mongodb://localhost:27017/gzhipin_test2') // 1.3. 获取连接对象 

const conn = mongoose.connection // 1.4. 绑定连接完成的监听(用来提示连接成功) 

conn.on('connected', function () { console.log('数据库连接成功') })

 4、接下来干什么

 6、概念:文档与集合

文档相当于时一个人的信息,一条记录

所以是单数

集合相当于时一堆人的信息,一张表

所以是复数

7、定义Schema文档的结构

 8、定义模型model,scheme只是结构,有model才能添加数据

// 2.2. 定义Model(与集合对应, 可以操作集合)
const UserModel = mongoose.model('user', userSchema) // 集合的名称为: users

/*3. 通过Model或其实例对集合数据进行CRUD操作*/
// 3.1. 通过Model实例的save()添加数据
function testSave() {
  // 创建UserModel的实例
  const userModel = new UserModel({ username: 'Bob', password: md5('234'), type: 'laoban' })
  // 调用save()保存
  userModel.save(function (error, user) {
    console.log('save()', error, user)
  })
}
testSave()

9、使用md5加密密码

const md5 = require('blueimp-md5') // md5加密的函数

 10、回调函数function (error, user) 的参数,第一个是错误信息,第二个信息文档doc

11、增删改查

// 3.1. 通过 Model 实例的 save()添加数据
function testSave() {
// user 数据对象
const user = {
username: 'xfzhang',
password: md5('1234'),
type: 'dashen',
}
const userModel = new UserModel(user)
// 保存到数据库
userModel.save(function (err, user) {
console.log('save', err, user)
})
}
// testSave()
// 3.2. 通过 Model 的 find()/findOne()查询多个或一个数据
function testFind() {
// 查找多个
UserModel.find(function (err, users) { // 如果有匹配返回的是一个[user, user..], 如果
没有一个匹配的返回[]
console.log('find() ', err, users)
})
// 查找一个
UserModel.findOne({_id: '5ae1d0ab28bd750668b3402c'}, function (err, user) { // 如果
有匹配返回的是一个 user, 如果没有一个匹配的返回 null
console.log('findOne() ', err, user)
})
}
// testFind()
// 3.3. 通过 Model 的 findByIdAndUpdate()更新某个数据
function testUpdate() {
UserModel.findByIdAndUpdate({_id: '5ae1241cf2dd541a8c59a981'}, {username: 'yyy'},
function (err, user) {
console.log('findByIdAndUpdate()', err, user)
// testUpdate()
// 3.4. 通过 Model 的 remove()删除匹配的数据
function testDelete() {
UserModel.remove({_id: '5ae1241cf2dd541a8c59a981'}, function (err, result) {
console.log('remove()', err, result)
})
}
// testDelete()

 12、向外暴露model

原文地址:https://www.cnblogs.com/carry-2017/p/11755578.html