That's the correct callback syntax, but what find
provides to the callback is a Cursor
, not an array of documents. So if you want your callback to provide results as an array of documents, call toArray
on the cursor to return them:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
Note that your function's callback still needs to provide an err
parameter so that the caller knows whether the query worked or not.
2.x Driver Update
find
now returns the cursor rather than providing it via a callback, so the typical usage can be simplified to:
collection.find({'_id': o_id}).toArray(function(err, results) {...});
Or in this case where a single document is expected, it's simpler to use findOne
:
collection.findOne({'_id': o_id}, function(err, result) {...});
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…