Я написал один рекурсивный запрос для обновления данных на уровне базы данных мудрый или иерархический.Рекурсивный вызов в асинхронной функции в node.js
Я написал этот код:
let updateInvitationRewards = function(parent, level, callback) {
Service.customer.getOneCustomer({
_id: parent
}, {}, {}, function(err, data) {
console.log(data.email);
level--;
if (data.parent) {
parent = data.parent.id;
} else if (level == 0 || data.parent == null)
callback("end");
updateInvitationRewards(parent, level--, callback);
});
};
updateInvitationRewards(parent, level, function(string) {
console.log(string);
cb();
});
Этот запрос дает ошибку следующим образом:
Error: Callback was already called.
Пожалуйста, помогите мне, я новичок в этих типов обратных вызовов.
Возможно, вы попытаетесь вставить 'updateInvitationRewards (parent, level--, callback);' внутри условия 'if (data.parent)'? –
Я не удалял код вставки из этой части кода для ясности данных ... но эта большая часть кода дает ошибку ... Обратный звонок уже был вызван .. Я не получаю его. –
Ошибка возникает, когда вы вызываете обратный вызов функции более одного раза. В вашем коде, когда уровень становится равным 0 или когда родитель имеет значение null, вызывается обратный вызов. Но ваш код будет продолжать называть udpateInvitationRewards, даже если условие else if выполнено. Поэтому в следующий раз, когда родитель будет равен нулю, callback будет вызван во второй раз. Это может вызвать ошибку. –