NodeJS + MongoDB - 简化功能

时间:2017-09-13 21:57:25

标签: node.js mongodb

我正在学习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();
        });
    });
};

1 个答案:

答案 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();
        });
    });
}

有不同的方法可以做到这一点,但我认为这说明了这个想法。