В качестве новичков js/node у меня возникают проблемы с пониманием того, как я могу обойти эту проблему.Область обратного вызова NodeJS
В основном у меня есть список объектов, которые я хотел бы сохранить в базе данных MongoDB, если они еще не существуют.
Вот код:
var getDataHandler = function (err, resp, body) {
var data = JSON.parse(body);
for (var i=0; i < data.length; i++) {
var item = data[i];
models.Entry.findOne({id: item.id}, function(err, res) {
if (err) { }
else if (result === null) {
var entry = new models.Entry(item);
feedbackEntry.save(function(err, result) {
if (err) {}
});
}
});
}
}
У меня есть проблема в том, что, поскольку он является асинхронным, когда new models.Entry(item)
линии выполнена значение элемента будет равно последним элемент в массиве данных для каждого один обратный вызов.
Какую модель можно использовать, чтобы избежать этой проблемы?
Спасибо.
Спасибо! Вы упомянули обратные вызовы - я передаю функции в качестве аргументов в настоящее время, но как я могу использовать шаблон обратного вызова таким образом, пока обеспечение переменной элемента не всегда является последним элементом в списке? Кроме того, с обещаниями будет ссылаться на текущий пункт или на значение предмета, когда обещание возвращается? – Sherlock
Я отредактировал пункт «переменная элемента не всегда является последним элементом в списке». –
Отлично, спасибо вам за помощь! – Sherlock