前面咱們已經作完了環境的部署和基本的測試,如今咱們要開始使用咱們的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