【问题标题】:How to update a record the proper way?如何以正确的方式更新记录?
【发布时间】:2012-05-12 08:04:58
【问题描述】:

我正在编写一个带有 Express/NodeJs 后端的主干应用程序,它依赖于 mongoDb(通过 mongoose)进行存储。

是时候更新数据库中的记录了,我碰壁了。

我写的代码是:https://gist.github.com/b90130f640cea75b0cbd

我了解阻止更新的错误是由于我传递了所有字段,包括不可修改的“_id”字段。

我要问的是:有什么方法可以将所有字段传递给更新方法,或者我可以 必须一一指定(或遍历所有)?

提前感谢您的帮助,问候。

【问题讨论】:

    标签: mongoose express


    【解决方案1】:

    您可以在将_id 传递给model.update() 之前删除它

    【讨论】:

      【解决方案2】:

      你可以只更新而不是更新。

      new User(req.body).save();
      

      无论如何,除了 req.body 将具有正确的数据可能会导致安全问题,具体取决于您的模型如何(GitHub 最近遇到了这样的问题)。

      我的建议是只从 req.body 中获取您想要的内容并进行更新。

      var updateData = {
        name: req.body.name
      };
      User.update({_id: user._id},updateData, function(err,affected) {
        console.log('affected rows %d', affected);
      });
      

      【讨论】:

      • 感谢布鲁诺的 upsert 指针!彻底溜出我的视线。也许,最后,通过在backbonejs端的“脏场跟踪”尝试走第二条路线会更好。
      猜你喜欢
      • 2016-08-14
      • 2012-06-22
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2018-07-08
      相关资源
      最近更新 更多