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) {...});