To je správná syntaxe zpětného volání, ale co find
poskytuje zpětnému volání Cursor
, nikoli pole dokumentů. Pokud tedy chcete, aby vaše zpětné volání poskytovalo výsledky jako pole dokumentů, zavolejte toArray
na kurzor, abyste je vrátili:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
Pamatujte, že zpětné volání vaší funkce musí stále poskytovat err
parametr, aby volající věděl, zda dotaz fungoval nebo ne.
Aktualizace ovladače 2.x
find
nyní vrací kurzor místo toho, aby jej poskytoval prostřednictvím zpětného volání, takže typické použití lze zjednodušit na:
collection.find({'_id': o_id}).toArray(function(err, results) {...});
Nebo v tomto případě, kdy se očekává jeden dokument, je jednodušší použít findOne
:
collection.findOne({'_id': o_id}, function(err, result) {...});