2017-01-11 10 views
2

このエラーをデバッグする際に問題があります。

これは私のコード

router.post('/accounts/show_accounts/:id', function(req,res){ 
    Account.findOne(
     {_id:req.params.id}, 
     {$push: {team: {team_name: req.body.team_name}}}, 
     {safe: true, upsert: true}, 
     function(err, model) { 
      console.log(err); 
     } 
    ) 
}); 

と私は思い

ERRMSG以下のエラーを取得しています:「サポートされていない投影オプション:$プッシュ:{チーム:{TEAM_NAME: 『笑』}} 」コード:2、コード名: 'BadValueを'}エラー状態として

+3

と同等です。 –

答えて

1

findOne()メソッドは、文書{ "$push": { "team": { "team_name": req.body.team_name } } }を投影とみなし、投影フィールドの名前は$で開始しません。私はあなたがクエリではなく更新操作をしたいと思う。その場合、あなたは$pushオペレータのみが更新操作ではなく、findOne()ようなクエリで使用されているためfindOneAndUpdate()またはfindByIdAndUpdate()メソッドを使用する必要があります。

router.post('/accounts/show_accounts/:id', function(req, res){ 
    Account.findByIdAndUpdate(
     req.params.id, 
     { "$push": { "team": { "team_name": req.body.team_name } } }, 
     { "upsert": true, "new": true }, 
     function(err, model) { 
      if (err) throw err; 
      console.log(model); 
     } 
    ) 
}); 

NBfindByIdAndUpdate(id, ...)findOneAndUpdate({ _id: id }, ...)

+0

が動作します。情報をありがとう –

関連する問題