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