nodeJS Mongoose更新多个文件&返回更改的值

时间:2016-10-15 04:01:36

标签: node.js mongodb mongoose

我本质上是尝试使用给定的scaler_ID查找所有任务,然后将它们各自的scaler_ID设置为-1,然后返回HTTP响应中的所有新任务。

这是我的代码:

api.post('/unassignTasks', function(req, res) {

Task.find({scaler_ID: req.body.scaler_ID}, function(err, tasks) {
    for (var i = 0; i < tasks.length; ++i) {
        tasks[i].scaler_Id = -1;
        console.log(tasks[i]);
        (function(arrayIndex) { 
            tasks[i].save(function(err, result) {
                if (err) { console.log(err); }
            });
        })(i);
        res.send(tasks);
        return;
    }
});

由于某种原因,这不起作用,并且scaler_ID未被设置为-1到数据库中的元素。是什么原因引起了这个?

1 个答案:

答案 0 :(得分:1)

使用async.each

的正确方法
//npm install async --save //don't forget to install it first
var async = require('async');

api.post('/unassignTasks', function(req, res) {
    var id = req.body.scaler_ID;
    Task.find({scaler_ID: id }, function(err, tasks) {
        async.each(tasks, function(task, each_cb) {
           task.scaler_Id = -1;
           task.save(each_cb);
        }, function(err) {
           if(err) 
               return res.status(400).send(err);
            res.send(tasks);
        });
    });
}
相关问题