【问题标题】:nodeJS Mongoose updating multiple documents & returning the changed valuesnodeJS Mongoose 更新多个文档并返回更改的值
【发布时间】:2016-10-15 14:14:52
【问题描述】:

我实际上是在尝试查找具有给定 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。任何想法是什么原因造成的?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案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);
            });
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-09
      • 2017-07-03
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多