Сроки обещания не такие, как ожидалось - PullRequest
0 голосов
/ 02 ноября 2019

Мне нужно сделать функцию, которая удалит массив идентификаторов из дат монго с помощью мангуста. Но обещание не работает => не ждет.

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

Может быть, я пропустил некоторое ожидание в коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...