MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La funzione sincrona chiama il driver mongodb di nodejs

Non puoi utilizzare un risultato asincrono come valore restituito da una funzione. È così semplice. Devi fornire il risultato asincrono al chiamante tramite un callback fornito come parametro alla funzione (o utilizzare futures/promises e rinviare effettivamente quel passaggio, ma è più complicato).

if_exists dovrebbe invece assomigliare a questo:

var if_exists = function(query, where, callback) {

  require('mongodb').connect(DB.mongo_url, function(err, db) {
    db.collection(where, function(err, coll) {
      coll.findOne(query, function(e, r) {
        //console.log(r);
        if (r === null) {
          callback(e, false);
        } else {
          callback(e, true);
        }
        // You should either close db here or connect during start up
        // and leave it open.
        db.close();
      });
    });
  });
}