我正在学习nodejs + mongodb。我现在不想使用mongoose
。
我有以下功能,工作正常。但是,我的问题是如何进一步简化这个?除突出显示的***
语句外,两个函数看起来都相同。
//for returning records
var resultsQuery = function(search, select, callback) {
mongo.connect(mongoURL, function(err, db) {
if (err){ throw err; }
*** db.collection("coll").find(search, select).toArray(function(err, result) {
if (err) { throw err; }
callback(result);
db.close();
});
});
};
// for updating records
var resultsUpdate = function(filter, set, callback) {
mongo.connect(mongoURL, function(err, db) {
if (err){ throw err; }
*** db.collection("coll").update(filter, set, function(err, result) {
if (err) { throw err; }
callback(result);
db.close();
});
});
};
答案 0 :(得分:0)
将所有常见内容放在一个函数中并传递回调:
var resultsQuery = function(search, select, callback) {
xpto(callback, (db, cb) => db.collection("coll").find(search, select).toArray(cb))
};
// for updating records
var resultsUpdate = function(filter, set, callback) {
xpto(callback, (db, cb) => db.collection("coll").update(filter, set, cb))
};
function xpto(callback, op) {
mongo.connect(mongoURL, function(err, db) {
if (err){ throw err; }
op(db, function(err, result) {
if (err) { throw err; }
callback(result);
db.close();
});
});
}
有不同的方法可以做到这一点,但我认为这说明了这个想法。