MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Appels de fonction synchrone pour le pilote nodejs mongodb

Vous ne pouvez pas utiliser un résultat asynchrone comme valeur de retour d'une fonction. C'est si simple. Vous devez fournir le résultat asynchrone à l'appelant via un rappel fourni en tant que paramètre de la fonction (ou utiliser des contrats à terme/promesses et différer efficacement cette étape, mais c'est plus compliqué).

if_exists devrait plutôt ressembler à ceci :

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