一、连接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