Node.js 使用forEach查找和更新不起作用

Node.js 使用forEach查找和更新不起作用,node.js,mongoose,Node.js,Mongoose,每个项目都有许多任务。而且任务具有开始日期时间字段,可能由于某些原因而延迟,因此特定项目的每个任务都应在给定的分钟内延迟和更新。我尝试了以下代码,但它没有更新给定的延迟时间,请 function delayAllTasks(req, res, next) { const givenProjectId = req.body.project_id; var delays_by = req.body.delays_by; try { Task.find

每个项目都有许多任务。而且任务具有开始日期时间字段,可能由于某些原因而延迟,因此特定项目的每个任务都应在给定的分钟内延迟和更新。我尝试了以下代码,但它没有更新给定的延迟时间,请

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);
    }
}

我会确保您的查询能够正确地找到任务。。我将记录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) => {

那么,我应该怎么做呢?我会记录任务计数,这样我们就知道实际上正在为查询找到任务。我也会考虑记录Err对象,这可能不是空的。try/catch不会从查询中看到任何错误。耶!我还使用了这个
console.log(“更新任务计数:”,任务?任务长度:0)行,它返回该特定项目的任务数,显示更新任务计数:14,但不更新它是
date
,如下所示:
estimate\u start\u datetime:{type:date,required:true},