【问题标题】:Update a document with FindByIdAndUpdate使用 FindByIdAndUpdate 更新文档
【发布时间】:2018-12-06 13:46:58
【问题描述】:

我遇到了 Mongoose 的问题,findByIdAndUpdate 没有在回调中返回正确的模型。

我想从用户文档更新TIMELINE.Description 属性:

var refereeSchema = mongoose.Schema({
    first_name: String,
    last_name: String,
    email: String,
    phone: Number,
    age: Number,
    role: String,

    note: Number,
    favorite_teams: String,
    hometown: String,
    picture: String,
    timeline: 
        {
            id_Game1: String,
            date_game: Date,
            description: String
        }

})  ; 

// new timeline
router.put('/:id', function(req,res,next){
      models.users.findByIdAndUpdate(req.params.id,{$set: {description : req.body.description}}, {new:true} , function(err,user){
       if(err){
           res.json({error :err}) ; 
       } else{
           res.send(user) ; 
       }
    });
});

【问题讨论】:

  • 我没有看到语法错误,返回的是什么模型?

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

您缺少要更新的子文档键的timeline 部分。应该是:

router.put('/:id', function(req,res,next){
    models.users.findByIdAndUpdate(
        req.params.id,
        {$set: {'timeline.description': req.body.description}}, 
        {new: true},
        function(err,user){
            if(err){
                res.json({error :err}) ; 
            } else{
                res.send(user) ; 
            }
        });
});

【讨论】:

  • 我认为您的意思是'timeline.description',因为那将是实际的文档路径。
猜你喜欢
  • 1970-01-01
  • 2021-10-23
  • 2013-08-14
  • 1970-01-01
  • 2018-08-18
  • 2017-02-10
  • 2020-08-12
  • 1970-01-01
  • 2015-11-09
相关资源
最近更新 更多