本篇讲述在Express框架中用Node.js封装MongoDB数据库增删改查的操作方法
在项目中需要频繁的对数据库进行增删改查的操作,把对mongodb数据库的操作方法进行封装将会减少很多代码量,以下的封装的方法代码:
const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://localhost:27017";
const dbName = "myTest";
// 连接数据库的函数
function _connectDB(callback) {
// 连接数据库
MongoClient.connect(url, {useNewUrlParser: true}, function (err, client) {
// var db = client.db(dbName);
if (err) {
callback(err, null)
return
} else {
callback(err, client)
console.log("connect success!")
}
})
}
// insertOne,封装插入数据的方法
/* *
* collectionName: 要操作的集合名称
* json: 要插入的数据
* callback: 插入成功要执行的回调函数
* */
exports.insertOne = function (collectionName, json, callback) {
_connectDB(function (err, client) {
var db = client.db(dbName);
db.collection(collectionName).insertOne(json, function (err, result) {
callback(err, result);
client.close(); // 关闭数据库
})
})
}
// deleteMany,封装删除数据的方法
exports.deleteMany = function (collectionName, json, callback) {
_connectDB(function (err, client) {
var db = client.db(dbName);
db.collection(collectionName).deleteMany(
json,
function (err, results) {
callback( err, results);
client.close();
}
)
})
}
// updateMany,封装修改数据的方法
exports.updateMany = function (collectionName, json1, json2, callback) {
_connectDB(function (err, client) {
var db = client.db(dbName);
db.collection(collectionName).updateMany(
json1,
json2,
function (err, results) {
callback(err, results);
client.close();
}
)
})
}
// getAllCount,封装总数据数的方法
exports.getAllCount = function (collectionName, callback) {
_connectDB(function (err, client) {
var db = client.db(dbName);
db.collection(collectionName).count({}).then(function (count) {
callback(count);
client.close();
})
})
}
// find,查找数据,找到所有数据以及分页
exports.find = function (collectionName, json, C, D) {
var results = []; // 结果数组
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.size * args.page || 0; // 数据条数
var limit = args.size || 0; // 数目限制
var sort = args.sort || {}; // 排序方式
} else {
throw new Error("find函数的参数个数,必须是3个或者4个");
return;
}
_connectDB(function (err, client) {
var db = client.db(dbName);
var result = db.collection(collectionName).find(json).skip(skipnumber).limit(limit).sort(sort);
result.toArray(function (err, docs) {
if (err) {
callback(err, null);
client.close();
return;
}
callback(null, docs);
client.close()
})
})
}