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

node.js mongodb - collection.find().toArray (devolución de llamada) - la devolución de llamada no se llama

No estás usando el open devolución de llamada, por lo que si está tratando de hacer findall solicitud justo después de crear el dao entonces no estará listo.

Si tu código es así, no funcionará.

var dao = new DataAccessObject("my_dbase", "localhost", 27017);

dao.findAll("my_collection",function() {console.log(arguments);});

Lo probé y no encuentra registros, y tampoco da error. Creo que debería dar un error.

Pero si lo cambia para devolver la llamada al constructor, entonces debería funcionar.

var DataAccessObject = function(db_name, host, port, callback){
    this.db = new Db(db_name, new Server(host, port, {auto_reconnect: true}, {}));
    this.db.open(callback);
}

Y haz tu código así.

var dao = new DataAccessObject("my_dbase", "localhost", 27017, function() {
    dao.findAll("my_collection",function() {console.log(arguments);});
});