データベースレベルでデータを更新する1つの再帰クエリを作成しました。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.
私はコールバックのこれらの種類に新しいです、私を助けてください。すべてのブラケット付き
'if(data.parent)'の中に 'updateInvitationRewards(parent、level--、callback);'を挿入できますか? –
データの明瞭さのためにコードのこの部分から挿入コードを削除しませんでした...しかし、このコードの多くはエラーを出しています...コールバックは既に呼び出されていました..私はそれを取得していません.. –
コールバック機能は複数回使用されます。あなたのコードで、レベルが0になったり、parentがnullの場合は、コールバックが呼び出されます。しかし、else if条件が満たされていても、あなたのコードは引き続きudpateInvitationRewardsを呼び出すでしょう。親がnullの次回までにコールバックが2回目に呼び出されます。これによりエラーが発生する可能性があります。 –