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},