gpt4 book ai didi

node.js - MongoDB cursor.each 方法返回最终的空值

转载 作者:可可西里 更新时间:2023-11-01 10:02:00 25 4
gpt4 key购买 nike

var cursor = db.collection('Carreer').find();
cursor.each(function (err, results) {
// the last results call is null
});

这个循环似乎额外运行了一次,返回 null 作为表中每一列的最后一个值。如何阻止 cursor.each 返回 null 值?

最佳答案

这是 cursor.each 的预期行为. null 值表示没有更多结果(即游标已耗尽/为空并已关闭)。如果你不想在光标结束时调用额外的 null,你可以使用 cursor.forEach :

db.collection('Carreer').find().forEach(function(doc) {
// handle
}, function(err) {
// done or error
});

另请注意:

cursor.each is deprecated.

为什么 null

cursor.each 方法只有 one callback唯一知道游标已完成的方法是最后一个 null。一个示例实现可以是:

function fetchAllCareers(callback) {
const results = [];
const cursor = db.collection('Carreer').find();
cursor.each(function(error, result) {
if (error) {
callback(error);
return;
}
if (result === null) { // This was the last iteration, we finished
callback(null, results);
return;
}
results.push(result);
});
}

另一方面,cursor.forEach 方法有一个 iterator callback和一个 second callback让您知道迭代已经完成。一个示例实现可以是:

function fetchAllCareers(callback) {
const results = [];
const cursor = db.collection('Carreer').find();
cursor.forEach(function(result) {
results.push(result);
}, function(error) { // all iterations finished
callback(error, results);
});
}

关于node.js - MongoDB cursor.each 方法返回最终的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51209724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com