Найти и обновить с помощью forEach не работает - PullRequest
0 голосов
/ 18 октября 2019

Каждый проект имеет много задач. И задачи имеют поле даты начала времени, оно может быть отложено по некоторым причинам, поэтому каждое задание для конкретного проекта должно быть отложено и обновлено на заданные минуты. Я попробовал следующий код, но он не обновляет время по заданной длительности задержки, пожалуйста.

function delayAllTasks(req, res, next)
{
    const givenProjectId = req.body.project_id;
    var delays_by = req.body.delays_by;

    try
    {
        Task.find({ project_id: givenProjectId }).exec((err, tasks) => {
            tasks.forEach((eachTasks) => {                
                Task.update(   { project_id: givenProjectId }, //where query
                               { $set: { estimate_start_datetime: moment(eachTasks.estimate_start_datetime).add(delays_by, 'minutes') } } //what to be changed
                           ).then(function (updatedDelays)
                            {                                
                                return res.status(200).json("updated", updatedDelays);
                            }).catch(function (err)
                            {
                                return res.status(503).json(err);
                            });
            })
        })
    }
    catch (err)
    {
        return res.status(500).json(err);
    }
}

1 Ответ

0 голосов
/ 18 октября 2019

Я бы удостоверился, что ваш запрос правильно находит задачи .. Я бы записал количество задач, найденных запросом Task.find. Код работает для меня, пока Task.find возвращает задачи для обновления.

function delayAllTasks(req, res, next)
{
    const givenProjectId = req.body.project_id;
    var delays_by = req.body.delays_by;

    Task.find({ project_id: givenProjectId }).exec((err, tasks) => {
            console.log("Updating task count:", tasks ? tasks.length: 0);
            tasks.forEach((eachTasks) => {

...

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