Мне нужно сделать функцию, которая удалит массив идентификаторов из дат монго с помощью мангуста. Но обещание не работает => не ждет.
async function deleteTestCases(testcases){
await Promise.all(testcases.map( (entryMain) => {
Case
.findById(entryMain)
.exec()
.then(function(tcafe) {
console.log(tcafe.use);
tcafe.use = "false";
tcafe.save()
.then(tCase => {
console.log("Tcase Update done");
})
.catch(err => console.log(err));
})
.catch(function(err) {
console.log(err);
});
}));
};
testcases - это массив ObjectIds из запроса mongoose. Затем я прохожу этот массив с promise.all и map. Как я понял, Mongoose exec () - это обещание.
Я вызываю это из функции get:
router.post('/deletecase', async (req, res) => {
await deleteTestCases(req.body.selection).then(res => {
console.log("delete Ok");
}).catch(error => {
console.log("delete fehler");
});
res.sendStatus(200);
});
У меня проблема, это работает. Элементы обновляются на всех. Но порядок вызова неверен. Я получил следующий заказ:
- Удалить Ok
- true
- Обновление Tcase выполнено
Но я ожидал
- true
- Tcase Обновление выполнено
- delete Ok
Может быть, я пропустил некоторое ожидание в коде?