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

Comprender la búsqueda en Node/Mongo

Te lo concedo, este caso es un poco extraño. Aquí está la versión 2.2 de mongodb-native.

En primer lugar, find tiene dos usos diferentes . Puede dar una función de devolución de llamada o no. Pero en en cualquier caso , regresa sincrónicamente un objeto. Más precisamente, es un cursor Podríamos esperar un mecanismo asíncrono al pasar una devolución de llamada, pero no aquí.

collection.find({ }, function (err, cursor) {
  assert(!err);
});
console.log('This happens after collection.find({ }, callback)');

O

const cursor = collection.find({});
console.log('Also happening after');

Por otro lado, toArray es una función asíncrona y también tiene dos usos diferentes. Esta vez, el objeto devuelto es diferente según los argumentos.

Son equivalentes:

cursor.toArray(function (err, documents) {
  assert.equal(1, documents.length);
});

Y

cursor.toArray()
  .then(documents => {
    assert.equal(1, documents.length);
  });

En la primera llamada, toArray devuelve undefined mientras que en el segundo, devuelve una Promise .