2017-09-13 3 views
0

Ich lerne Nodejs + Mongodb. Ich möchte ab jetzt mongoose nicht verwenden. Ich habe unten Funktionen, die gut funktionieren. Meine Frage ist jedoch, wie einfach weiter? Beide Funktionen sehen bis auf die hervorgehobene ***-Anweisung gleich aus.NodeJS + MongoDB - Funktionen vereinfachen

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

Antwort

0

Setzen Sie die alle gemeinsam die Dinge in einer Funktion und in der Callback-Pass:

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

Es gibt verschiedene Wege, dies zu tun, aber ich denke, das ist die Idee veranschaulicht.