【问题标题】:Node js not saving method PUT节点js不保存方法PUT
【发布时间】:2017-10-17 00:26:40
【问题描述】:

我正在尝试更新数组内的对象值。我已经完成了方法并在数组中搜索了我想要的元素,并返回了 200。但是当我再次请求时,值返回到原始值(不保存)。

首先是架构:

    { 
         "_id" : "1",
         "username" : "a",
         "elements" : [{"_id": "22", "name":"bb"}, {"_id":"33", "name": "cc"}]   
    }

这是我的方法

update = function(req, res) {
        User.findById(req.params.id, function (err, user) {
        if (!user) {
            res.send(404, 'User not found');
        }
        else{
            var array = user.elements;
            for (var i = 0; i < array.length; i++) { 
                if (array[i]._id == "22") { 
                  result = array[i];
                  if (req.body.name != null) result.name = req.body.name;
                  result.save(function(err) {
                      if(!err) {
                          console.log('Updated');
                      } 
                      else {
                          console.log('ERROR: ' + err);
                      }
                      res.send(result);
                  });
                  break;
                } 
            }
        }
        });
    }

我不知道我做错了什么。我的意思是我简化了一切,但我认为问题出在方法上。

【问题讨论】:

  • 您应该只执行一次res.send(result)。使用Promise.all 或async.js 特别是async.mapSeries 来更新所有元素,然后执行res.send() 一次。
  • 您还应该使用您的架构编辑您的问题。
  • 我相信 res.send 只被调用一次@Mikey -- 虽然很难用缩进来判断。
  • 你有没有控制 req.params.id 有什么东西?找到后你有没有尝试解决错误?您的代码在哪里停止?到目前为止,您打印了什么控制台?
  • 你确定不要user.save()。

标签: javascript node.js mongodb


【解决方案1】:

您必须像这样保存user 对象和result:

  update = function(req, res) {
            User.findById(req.params.id, function (err, user) {
            if (!user) {
                res.send(404, 'User not found');
            }
            else{
                var array = user.elements;
                for (var i = 0; i < array.length; i++) { 
                    if (array[i]._id == "22") { 
                      result = array[i];
                      if (req.body.name != null) result.name = req.body.name;

                      break;
                    } 
                }
                 user.save(function(err) {
                          if(!err) {
                              console.log('Updated');
                          } 
                          else {
                              console.log('ERROR: ' + err);
                          }
                          res.send(user);
                      });
            }
            });

        }

【讨论】:

    猜你喜欢
    • 2016-02-13
    • 2018-02-17
    • 2016-02-19
    • 2020-06-08
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多