Đó là cú pháp gọi lại chính xác, nhưng find
cung cấp cho cuộc gọi lại là một Cursor
, không phải là một mảng tài liệu. Vì vậy, nếu bạn muốn lệnh gọi lại của mình cung cấp kết quả dưới dạng một mảng tài liệu, hãy gọi toArray
trên con trỏ để trả về chúng:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
Lưu ý rằng lệnh gọi lại hàm của bạn vẫn cần cung cấp err
để người gọi biết truy vấn có hoạt động hay không.
Cập nhật trình điều khiển 2.x
find
bây giờ trả về con trỏ thay vì cung cấp nó thông qua một lệnh gọi lại, do đó, cách sử dụng thông thường có thể được đơn giản hóa thành:
collection.find({'_id': o_id}).toArray(function(err, results) {...});
Hoặc trong trường hợp mong đợi một tài liệu duy nhất, thì đơn giản hơn là sử dụng findOne
:
collection.findOne({'_id': o_id}, function(err, result) {...});