Это ожидаемое поведение cursor.each
. Значение null
указывает, что результатов больше нет (т. Е. Курсор исчерпан / пуст и закрыт). Если вам не нужен дополнительный вызов null
по окончании курсора, вы можете использовать cursor.forEach
:
db.collection('Carreer').find().forEach(function(doc) {
// handle
}, function(err) {
// done or error
});
Также обратите внимание:
cursor.each
устарело .
Почему null
?
Метод cursor.each
имеет только один обратный вызов , и единственный способ узнать, что курсор закончил, - последний 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
имеет обратный вызов итератора и второй обратный вызов , чтобы сообщить, что итерации завершены. Примером реализации может быть:
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);
});
}