So. Tôi có một kịch bản rất cơ bản, kết nối với cơ sở dữ liệu và thực hiện find
trên bộ sưu tập có nhiều tài liệu và giới hạn nó thành 3 mục. Mọi thứ diễn ra suôn sẻ ngoại trừ ở cuối kết quả của tôi, null
và tập lệnh không kết thúc thay vì đóng kết nối lặng lẽ sau khi đã thành công.node-mongodb-native - con trỏ trả về null là giá trị cuối cùng trong mỗi cuộc gọi
Ở đây tôi tuyên bố params của tôi và tạo đối tượng cơ sở dữ liệu của tôi:
var SERVER = 'localhost',
PORT = 27017,
DATABASE = 'test',
COLLECTION = 'coll',
mongo = require('mongodb'),
db = new mongo.Db(DATABASE,
new mongo.Server(SERVER, PORT, {auto_reconnect: true}),
{});
Và ở đây tôi kết nối với cơ sở dữ liệu và tiến hành để truy vấn nó với một con trỏ find
và each
chức năng:
db.open(function(err, db) {
if(err) throw err;
var collection = new mongo.Collection(db, COLLECTION),
cursor = collection.find({}, {}).limit(3);
cursor.each(function(err, doc) {
if(err) throw err;
console.log(doc);
});
db.close();
});
Kết quả đẹp:
{ _id: '1',
a: 'first object' }
{ _id: '2',
a: 'second object' }
{ _id: '3',
a: 'third object' }
cho đến khi có một số điện thoại
null
xuất hiện.
Như đã nêu ở trên, tập lệnh sau đó tiến hành không chấm dứt.
Tôi không hiểu tại sao và sẽ đánh giá cao con trỏ về cách làm cho nó chấm dứt độc đáo.
này nên là câu trả lời thực tế. – Julian
Thậm chí, tôi đã nhận được một giá trị cuối cùng trong khi gọi đến cursor.each. phiên bản nodejs: 0.12.9, phiên bản dod Mongodb:^2.2.33. Tốt mà tôi đã thấy câu trả lời này. –