Ich möchte Mongoose Bulk-Operation für Upserting-Transaktionen verwenden. Für jede meiner Transaktionen möchte ich sie in einer Schleife verarbeiten und innerhalb dieser Schleife muss ich ein Versprechen verwenden. Nachdem dieses Versprechen aufgelöst wurde, möchte ich das Upsert zum Bulk hinzufügen.JavaScript - async/warten nicht auf das Versprechen zu lösen
Mein Problem hier ist, dass, obwohl ich await
für jedes Versprechen zu beenden, die Masse am Ende der Funktion ausgeführt wird, bevor eine der Versprechen gelöst ist. Was mache ich falsch oder wie kann ich das beheben?
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
});
Was ist 'transactions.forEach'? Wie behandelt es Versprechen, die durch seinen Rückruf zurückgegeben werden? – Bergi
Transaktionen sind nur ein Array von Transaktionsobjekten. Ich traverse das Array mit '' 'forEach''' – phoebus
Nun, das ist ein Problem :-) – Bergi