MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como obter um retorno de chamada na coleção MongoDB.find()


Essa é a sintaxe de retorno de chamada correta, mas o que find fornece ao retorno de chamada é um Cursor , não uma matriz de documentos. Portanto, se você quiser que seu retorno de chamada forneça resultados como uma matriz de documentos, chame toArray no cursor para retorná-los:
collection.find({'_id':o_id}, function(err, cursor){
    cursor.toArray(callback);
    db.close();
});

Observe que o retorno de chamada da sua função ainda precisa fornecer um err parâmetro para que o chamador saiba se a consulta funcionou ou não.

Atualização de driver 2.x

find agora retorna o cursor em vez de fornecê-lo por meio de um retorno de chamada, portanto, o uso típico pode ser simplificado para:
collection.find({'_id': o_id}).toArray(function(err, results) {...});

Ou neste caso em que um único documento é esperado, é mais simples usar findOne :
collection.findOne({'_id': o_id}, function(err, result) {...});