【问题标题】:Mongoose update subdocument with save is not working带有保存的猫鼬更新子文档不起作用
【发布时间】:2016-09-29 23:11:34
【问题描述】:

尝试更新数组中的对象。

我的代码:

module.exports = (req, res) => {

  var givenProject = req.body;
  var query = mongoose.model('cv').findOne({alias: req.params.alias});

  query.exec(function(err, cv){
    if(err){
      res.status(400).send({message: 'Could not find cv with alias: ' + req.params.alias, err: err})
     }
    var doc = cv.projects.id(req.params.id);
    doc.langTitles = givenProject.langTitles;
    doc.langDescriptions = givenProject.langDescriptions;
    doc.save(function(err){
      if(err){
        res.status(400).send({message: 'Could not update project', err: err});
        return;
      }
      res.status(200).send();
    });
  });
};

没有给出错误。找到var doc,发布的数据与doc的数据结构相同,与原始数据不同。

文档未更新。我在这里错过了什么?

【问题讨论】:

  • var doc = cv.projects.id(req.params.id); 后面的 doc 是什么? cv.projects 是什么? cv.projects.id 是函数吗?
  • 它是 mongoose 的内置函数,用于查找子文档。 mongoosejs.com/docs/subdocs.html

标签: javascript mongodb mongoose


【解决方案1】:

据猫鼬docs

子文档享有与普通文档相同的所有功能。这 唯一的区别是 t不是单独保存的它们是 在保存其顶级父文档时保存

因此尝试替换

doc.save(function(err) ...

cv.save(function(err) ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2013-02-02
    • 2017-10-05
    • 2016-07-14
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多