2017-09-13 77 views
0

我正在學習nodejs + mongodb。截至目前,我不想使用mongoose。 我有以下功能工作正常。但是,我的問題是如何進一步簡單呢?除突出顯示的***語句外,兩個函數看起來都一樣。NodeJS + MongoDB - 簡化函數

//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

將所有常用的東西在一個函數,並通過回調:

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

有不同的方式來做到這一點,但我覺得這說明了想法。