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