写在前面:
最近读了一本ES6的书,算是开启了我转型到js前端领域的一个契机,感概技术发展的如此迅速,于是又囫囵吞枣的学了reactjs,nodejs,mongodb基础知识。一直忙着学习,也没有腾出时间总结,这次在学习nodejs操作mongodb增删改查基础dao层操作时,自己照葫芦画瓢封装了两个模块,对于初学者也好理解,可以对比着看,使用起来也比较简单,提供给大家做做参考,不吝赐教。
模块一
命名为MongoDBHandler.js
function MongoDB(MongoClient,url,dbName,collectionName){ this.MongoClient = MongoClient; this.url= url; this.dbName = dbName; this.collection = collectionName; }; //连接数据库 MongoDB.prototype.connect = function(url,callback){ if(!url){ return; } this.MongoClient.connect(url,function(err,db){ callback(err,db); db.close(); }); } //插入单条数据 MongoDB.prototype.insertOne = function(oneObj,callback){ let dbName = this.dbName; let collection = this.collection; this.connect(this.url,function(err,db){ var client = db.db(dbName); client.collection(collection).insertOne(oneObj, function(err, res) { if (err) throw err; console.log("单个文档插入成功"); if(callback){ callback(err,res); } }); }); } //批量插入 MongoDB.prototype.insertMany = function(objs,callback){ if(!Array.isArray(objs)){ throw new Error("非数组,类型不匹配!"); return; } let dbName = this.dbName; let collection = this.collection; this.connect(this.url,function(err,db){ var client = db.db(dbName); client.collection(collection).insertMany(objs, function(err, res) { if (err) throw err; console.log("批量文档插入成功"); if(callback){ callback(err,res); } }); }); } //查找指定条件下的数据 MongoDB.prototype.find = function(whereStr,callback){ let dbName = this.dbName; let collection = this.collection; this.connect(this.url,function(err,db){ if (err) throw err; var client = db.db(dbName); client.collection(collection).find(whereStr).toArray(function(err, result) { if (err) throw err; console.log(result); if(callback){ callback(err,result); } }); }); } //删除 MongoDB.prototype.remove = function(whereStr,callback){ let dbName = this.dbName; let collection = this.collection; this.connect(this.url,function(err,db){ if (err) throw err; var client = db.db(dbName); client.collection(collection).remove(whereStr,function(err, result) { if (err) throw err; console.log(result); if(callback){ callback(err,result); } }); }); } //修改 MongoDB.prototype.update = function(data,updateData,callback){ let dbName = this.dbName; let collection = this.collection; this.connect(this.url,function(err,db){ if (err) throw err; var client = db.db(dbName); client.collection(collection).remove(data,updateData,function(err, result) { if (err) throw err; console.log(result); if(callback){ callback(err,result); } }); }); } module.exports = MongoDB; 模块一如何使用
var MongoClient1 = require('mongodb').MongoClient; var url1= "mongodb://localhost:27017/"; var dbName1 = "runoob"; var collection1 = "site2"; var oneObj = { name: "name1", url: "www.runoob" }; var myobj = [ { name: 'name2', url: 'https://www.baidu.com', type: 'cn'}, { name: 'name3', url: 'https://www.google.com', type: 'en'}, { name: 'name4', url: 'https://www.google.com', type: 'en'} ]; var mongodb = require("./MongoDBHandler");//引入包 var mongo = new mongodb(MongoClient1,url1,dbName1,collection1); mongo.insertOne(oneObj,function(err,res){//插入单条 console.log(res+ res.insertedCount); }); mongo.insertMany(myobj,function(err,res){ console.log(res,res.insertedCount); }); mongo.remove({"type":"cn"},function(err,res){ console.log(res); }) mongo.find({},function(err,res){ console.log(res); }); 模块二
命名为MongoDBHandler.js
function MongoDB(MongoClient,url,dbName,collection){ //插入单条数据 this.insertOne = function(oneObj,callback){ MongoClient.connect(url,function(err,db){ var client = db.db(dbName); client.collection(collection).insertOne(oneObj, function(err, res) { if (err) throw err; console.log("单个文档插入成功"); if(callback){ callback(err,res); } }); db.close(); }); } //批量插入 this.insertMany = function(objs,callback){ if(!Array.isArray(objs)){ throw new Error("非数组,类型不匹配!"); return; } MongoClient.connect(url,function(err,db){ var client = db.db(dbName); client.collection(collection).insertMany(objs, function(err, res) { if (err) throw err; console.log("批量文档插入成功"); if(callback){ callback(err,res); } }); db.close(); }); }; //查找指定条件下的数据 this.find = function(whereStr,callback){ MongoClient.connect(url,function(err,db){ if (err) throw err; var client = db.db(dbName); client.collection(collection).find(whereStr).toArray(function(err, result) { if (err) throw err; console.log(result); if(callback){ callback(err,result); } }); db.close(); }); } //删除 this.remove = function(whereStr,callback){ MongoClient.connect(url,function(err,db){ if (err) throw err; var client = db.db(dbName); client.collection(collection).remove(whereStr,function(err, result) { if (err) throw err; console.log(result); if(callback){ callback(err,result); } }); db.close(); }); } //修改 this.update = function(data,updateData,callback){ MongoClient.connect(url,function(err,db){ if (err) throw err; var client = db.db(dbName); client.collection(collection).remove(data,updateData,function(err, result) { if (err) throw err; console.log(result); if(callback){ callback(err,result); } }); db.close(); }); } }; module.exports = MongoDB; 使用方法同模块一
文章来源: NodeJS操作MongoDB的Dao层封装