前面咱们已经作完了环境的部署和基本的测试,如今咱们要开始使用咱们的mongoose来链接咱们的数据库,作到先后端分离这样一个操做,也就是常常说的mvc(model view controller),在model和controller之间常常须要一些工具来进行对接,帮助完成数据库的操做和通信mongodb
什么是mongoose呢:Mongoose是一个开源封装好的实现Node和Mongodb数据通信的数据建模库数据库
第一步,安装咱们的mongoosenpm
npm install mongoose --save
接下来咱们在咱们的service下面创建一个新的文件夹database,来存放咱们数据库相关的文件,而后咱们创建一个init.js文件,用来作数据库的链接和初始化后端
const mongoose = require('mongoose') const db = "mongodb://localhost/simle-db" mongoose.Promise = global.Promise exports.connect = ()=>{ //链接数据库 mongoose.connect(db) //增长数据库链接的事件监听 mongoose.connection.on('disconnected',()=>{ //进行重连 mongoose.connect(db) }) //数据库出现错误的时候 mongoose.connection.on('error',err=>{ console.log(err) mongoose.connect(db) }) //连接打开的时候 mongoose.connection.once('open',()=>{ console.log('MongoDB Connected successfully!') }) }
写完以后咱们再去service/index.js 里面加入当即执行函数,在使用前要加入connectpromise
const { connect } = require('./database/init.js')
而后添加当即执行函数mvc
//当即执行函数 (async ()=>{ await connect() })()
到这一步,咱们的数据库是已经能够链接成功了的。那接下来咱们就要作一些逻辑处理了前后端分离
增长Promise方法(所谓Promise,简单说就是一个容器,里面保存着某个将来才会结束的事件(一般是一个异步操做)的结果。从语法上说,Promise 是一个对象,从它能够获取异步操做的消息。Promise 提供统一的 API,各类异步操做均可以用一样的方法进行处理。一般传入两个参数resolve,reject)异步
exports.connect = ()=>{ //链接数据库 mongoose.connect(db) let maxConnectTimes = 0 return new Promise((resolve,reject)=>{ //增长数据库监听事件 mongoose.connection.on('disconnected',()=>{ console.log('***********数据库断开***********') if(maxConnectTimes<=3){ //当断开链接的时候,让他尝试重连三次 maxConnectTimes++ //每次+1 mongoose.connect(db) }else{ //从新链接三次后仍是没有链接上,咱们就抛出异常 reject() // 用reject() 返回给promise throw new Error('数据库出现问题,请及时处理.....') } }) mongoose.connection.on('error',(err)=>{ console.log('***********数据库错误') if(maxConnectTimes<=3){ maxConnectTimes++ mongoose.connect(db) }else{ reject(err) throw new Error('数据库出现问题,请及时处理.....') } }) //连接打开的时 mongoose.connection.once('open',()=>{ console.log('MongoDB connected successfully') resolve() }) }) }
好了 咱们的数据库链接和逻辑构造差很少就这样了好了,咱们这套实战呢会用到不少ES6的语法只是,用的时候我会尽可能的给补充完整的async