Ответ 1
То, что правильный синтаксис обратного вызова, но что find
обеспечивает обратный вызов, это Cursor
, а не массив документов. Поэтому, если вы хотите, чтобы ваш обратный вызов предоставил результаты в виде массива документов, вызовите toArray
на курсор, чтобы вернуть их:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
Обратите внимание, что ваш обратный вызов функции все равно должен предоставить параметр err
, чтобы вызывающий абонент знал, работал ли запрос или нет.
Обновление 2.x для драйверов
find
теперь возвращает курсор, а не обеспечивает его посредством обратного вызова, поэтому типичное использование может быть упрощено:
collection.find({'_id': o_id}).toArray(function(err, results) {...});
Или в этом случае, когда ожидается один документ, проще использовать findOne
:
collection.findOne({'_id': o_id}, function(err, result) {...});