使用FindByIdAndUpdate更新文档

时间:2016-04-12 09:41:19

标签: node.js mongodb mongoose mongoose-schema

我遇到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) ; 
       }
    });
});

1 个答案:

答案 0 :(得分: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) ; 
            }
        });
});