2016-04-12 1 views
0

findByIdAndUpdateがコールバックで正しいモデルを返さない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) ; 
     } 
    }); 
}); 
+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) ; 
      } 
     }); 
}); 
+0

'' timeline.description''というのは、実際の文書パスと同じだと思います。 –

+0

おっと、ええ、うまくいくでしょう。 :-)ありがとう。 – JohnnyHK

関連する問題