一、連接javascript
import mongoose from 'mongoose' import config from '../config.js' module.exports = () => { // 一、將mongoose的內置Promise變爲 mongoose.Promise = global.Promise // 二、鏈接mongodb mongoose.connect(`mongodb://${config.MONGOOSE.SERVER}/${config.MONGOOSE.DATABASE}`) // const db = mongoose.createConnection('mongodb://127.0.0.1/elm') // db.on('open',function () { // // 全部的mongoose的操做都應該寫在這裏面 // console.log('mongoose連接成功...') // }) // // db.on('error',function (err) { // if(err){ // console.log('mongoose連接出錯...') // mongoose.connection.close() // } // }) return (req, res, next) => { // app.locals.options = options // res.app.locals.options = options // res.locals.options = options // 全局初始化 // global.dbHelper = require( './db/dbServer'); next() } }
二、CURDjava
export default { // 增長一條數據 add(Model,Doc){ return new Promise(function (resolve,reject) { Model.create(Doc,function (err,doc) { if(err){ reject(err) }else{ resolve(doc) } }) }) }, // 增長多條數據 addMany(Model,Docs){ // Model.insertMany(doc(s), [options], [callback]) return new Promise(function (resolve,reject) { let ids=[] for(let Doc of Docs){ Model.create(Doc,function (err,doc) { if(err){ this.deleteMany(Model,ids) reject(err) // TODO:打斷循環 // break }else{ ids.push(doc._id) } }) } resolve() }) }, // 按條件刪除 delete(Model,Query){ return new Promise(function (resolve,reject) { Model.remove(Query, function (err) { if(err){ reject(err) }else { resolve() } }) }) }, // 刪除多條數據 deleteMany(Model,Ids){ return new Promise(function (resolve,reject) { for(let id of Ids){ let promise=this.deleteById(Model,id) promise.then(function (result) { // TODO:繼續 // continue },function (err) { reject(err) }) } resolve() }) }, // 按id刪除 deleteById(Model,Id){ return new Promise(function (resolve,reject) { Model.remove({ _id: Id }, function (err) { if(err){ reject(err) }else { resolve() } }) }) }, // 刪除全部文檔 clear(Model){ return new Promise(function (resolve,reject) { Model.remove({}, function (err) { if(err){ reject(err) }else { resolve() } }) }) }, // 按條件更新 update(Model,Query,Doc,Options){ // 修改多條數據的時候的選項 // Options={multi:true} return new Promise(function (resolve,reject) { Model.update(Query, { $set: Doc},Options, function (err, doc) { if(err){ reject(err) }else { resolve(doc) } }) }) }, // 按照id更新 updateById(Model,id,Doc,Options){ return new Promise(function (resolve,reject) { Model.findByIdAndUpdate(id, { $set: Doc},Options, function (err, doc) { if(err){ reject(err) }else { resolve(doc) } }) }) }, // 按條件獲取 get(Model,Query,Select,Options){ // 模糊查詢用正則表達式 // MyModel.find({ name: /john/i }, 'name friends', function (err, docs) { }) return new Promise(function (resolve,reject) { Model.find(Query,Select,Options,function (err, docs) { if(err){ reject(err) }else { resolve(docs) } }) }) }, // 按id獲取 getById(Model,Id,Select,Options){ return new Promise(function (resolve,reject) { Model.findById(Id,Select,Options,function (err, doc) { if(err){ reject(err) }else { resolve(doc) } }) }) }, // 獲取全部文檔 getAll(Model,Select){ return new Promise(function (resolve,reject) { Model.find({},Select,{},function (err, docs) { if(err){ reject(err) }else { resolve(docs) } }) }) }, // 獲取分頁數據 page(Model,Query,pageIndex,pageSize){ let start=(pageIndex-1)*pageSize; let query=Model.find(Query) query.skip(start); query.limit(pageSize); // query.populate('category','name') // query.populate({ // path: 'fans', // match: { age: { $gte: 21 }}, // select: 'name -_id', // options: { limit: 5 } // }) //query.sort(Sort) //query.sort('-occupation') // query.where('title','XXX') // .where('name.last').equals('Ghost') // .where('age').gt(17).lt(66) // .where('likes').in(['vaporizing', 'talking']) // query.select('name occupation') //執行分頁查詢 query.exec(function(err,docs){ //分頁後的結果 if(err){ reject(err) }else{ resolve(docs) } }) }, // 獲取全部條數 count(Model,query){ return new Promise(function (resolve,reject) { Model.count(query,function (err, count) { if(err){ reject(err) }else { resolve(count) } }) }) } }
一、本博客中的文章摘自網上的衆多博客,僅做爲本身知識的補充和整理,並分享給其餘須要的coder,不會用於商用正則表達式
二、由於不少博客的地址已經記不清楚了,因此不會在這裏標明出處mongodb