トランザクションを更新するためにMongooseの一括操作を使用したいと思います。私のトランザクションごとに、それらをループで処理したいと思っています。そのループの中で私は約束を使用する必要があります。その約束が解決した後、私は大量にupsertを追加したい。JavaScript - async /約束を待つことを約束していません
ここで私の問題は、すべての約束が完了するまで私がawait
ですが、約束が解決される前に機能の最後にバルクが実行されるということです。何が間違っているのですか?これをどうやって解決できますか?
const bulkTransactions = Transaction.collection.initializeUnorderedBulkOp();
transactions.forEach(async (transaction: any) => {
// do some suff, fill transaction_data
await Utils.processTransactionType(transaction).then((action: any) => {
if (action) {
// do other stuff
}
bulkTransactions.find({_id: hash}).upsert().replaceOne(transaction_data);
}).catch((err: Error) => {
// log error
});
});
await bulkTransactions.execute().catch((err: Error) => {
// log error
});
を 'transactions.forEach'はどのようなものですか?そのコールバックによって返される約束をどのように扱いますか? – Bergi
トランザクションは単なるトランザクションオブジェクトの配列です。私は '' forEach'''で配列をたどります。 – phoebus
これは問題です:-) – Bergi