sql >> Base de Datos >  >> NoSQL >> MongoDB

La función síncrona llama al controlador nodejs mongodb

no puedes use un resultado asíncrono como el valor de retorno de una función. Es así de simple. Tiene que entregar el resultado asincrónico a la persona que llama a través de una devolución de llamada que se proporciona como un parámetro para la función (o usar futuros/promesas y diferir efectivamente ese paso, pero eso es más complicado).

if_exists debería verse así:

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