sql >> Databasteknik >  >> NoSQL >> MongoDB

Synkron funktion kräver nodejs mongodb drivrutin

Du kan inte använd ett asynkront resultat som returvärde från en funktion. Det är så enkelt. Du måste leverera det asynkrona resultatet till den som ringer via en återuppringning som tillhandahålls som en parameter till funktionen (eller använda terminer/löften och effektivt skjuta upp det steget, men det är mer involverat).

if_exists ska se ut så här istället:

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



  1. node-mongodb-native MongoClient stänger oväntat anslutningar

  2. kan inte använda delen (...) för att korsa elementet

  3. Välj data där intervallet mellan två olika fält innehåller ett givet nummer

  4. MongodDB $dra bara ett element från arrayen