findOne funciona pero no lo consigue todo / find

findOne funciona bien

db.collection('updates', function (err, collection) { collection.findOne({ author: req.user._id }, function (err, doc) { } }); 

Estoy tratando de obtener todos los documentos en lugar de uno solo. Estoy cambiando findOne to find (se muestra a continuación) y no funciona. ¿Cómo puedo solucionar esto?

  db.updates.find({ author: req.user._id }, function (err, doc) { } 

El mensaje de error: indica que no se puede llamar al método “find” de undefined, lo que significa que no se reconoce la colección.

Actualización: Esto tampoco funciona:

 db.collection('updates', function (err, collection) { collection.find({ //changed findOne to find author: req.user._id }, function (err, doc) { } }); 

Parece que está usando el controlador Native MongoDB Node.JS para consultar su base de datos. De acuerdo con su .toArray() léame , debe usar el método .toArray() para crear una instancia del cursor de MongoDB , devuelto desde la llamada .find() :

 collection.find({ author: req.user._id }).toArray(function (err, docs) { // docs is an Array of documents here }); 

Si tiene problemas con el controlador nativo de MongoDB Node.JS, sugeriría usar un envoltorio alrededor con API más intuitiva, por ejemplo:

  • mongojs
  • monje
  • mongroskin