【问题标题】:Subdocument does not update - mongoose子文档不更新 - 猫鼬
【发布时间】:2022-02-15 08:12:36
【问题描述】:

我正在尝试更新父文档的子文档。

我有一个名为“发布”的文档,我引用了这样的“用户”文档:

const PostSchema = new mongoose.Schema({
  
  title: String,
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
    required: true
  },

},
  { collection: 'posts' })


const Post = mongoose.model('Post', PostSchema);
module.exports = Post;

我正在尝试更改名称,例如发布者的名称。名称字段在“用户”中。

我正在尝试这样改变它:

exports.update = async (req, res) => {
//find user by its id, update its post with what's in req.body
Post.findById(req.body.id, function(err, result) {
    console.log(result)
    if (!err) {
      if (!result){
        res.status(404).send('User was not found');
      }
      else{
        result.user.nome = "User Name";
        result.markModified("user"); 
        result.save(function(saveerr, saveresult) {
          if (!saveerr) {
            res.status(200).send(saveresult);
          } else {
            res.status(400).send(saveerr.message);
          }
        });
      }
    } else {
      res.status(400).send(err.message);
    }
  }).populate("user");
}

这是我的 route.js

app.put(
    "/api/produtor/update",
    controller.update
  );

当我在邮递员上运行它时,我得到状态 200,并且名称在退货中显示为已修改,但它没有保存在银行中。

如果有人能帮我分析一下,我将不胜感激!

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    这可能已经过时了,但根据这个 GitHub comment,这可能无法开箱即用。

    我建议使用User 架构而不是通过Post 架构来更新User

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 2020-08-05
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多