//這個模塊里面封裝了所有對數據庫的常用操作 var MongoClient = require('mongodb').MongoClient; var settings = require("../settings.js"); //不管數據庫什么操作,都是先連接數據庫,所以我們可以把連接數據庫 //封裝成為內部函數 function _connectDB(callback) { var url = settings.dburl; //從settings文件中,都數據庫地址 //連接數據庫 MongoClient.connect(url, function (err, db) { if (err) { callback(err, null); return; } callback(err, db); }); } //插入數據 exports.insertOne = function (collectionName, json, callback) { _connectDB(function (err, db) { db.collection(collectionName).insertOne(json, function (err, result) { callback(err, result); db.close(); //關閉數據庫 }) }) }; //查找數據,找到所有數據。args是個對象{"pageamount":10,"page":10} exports.find = function (collectionName, json, C, D) { var result = []; //結果數組 if (arguments.length == 3) { //那么參數C就是callback,參數D沒有傳。 var callback = C; var skipnumber = 0; //數目限制 var limit = 0; } else if (arguments.length == 4) { var callback = D; var args = C; //應該省略的條數 var skipnumber = args.pageamount * args.page || 0; //數目限制 var limit = args.pageamount || 0; //排序方式 var sort = args.sort || {}; } else { throw new Error("find函數的參數個數,必須是3個,或者4個。"); return; } //連接數據庫,連接之后查找所有 _connectDB(function (err, db) { var cursor = db.collection(collectionName).find(json).skip(skipnumber).limit(limit).sort(sort); cursor.each(function (err, doc) { if (err) { callback(err, null); db.close(); //關閉數據庫 return; } if (doc != null) { result.push(doc); //放入結果數組 } else { //遍歷結束,沒有更多的文檔了 callback(null, result); db.close(); //關閉數據庫 } }); }); } //刪除 exports.deleteMany = function (collectionName, json, callback) { _connectDB(function (err, db) { //刪除 db.collection(collectionName).deleteMany( json, function (err, results) { callback(err, results); db.close(); //關閉數據庫 } ); }); } //修改 exports.updateMany = function (collectionName, json1, json2, callback) { _connectDB(function (err, db) { db.collection(collectionName).updateMany( json1, json2, function (err, results) { callback(err, results); db.close(); }); }) } exports.getAllCount = function (collectionName,callback) { _connectDB(function (err, db) { db.collection(collectionName).count({}).then(function(count) { callback(count); db.close(); }); }) }