2017-03-08 15 views
1

How to push array elements to an array if _id of documents already exists and create new document if _id doesn't exist?で私の質問の解決策として次のコードを書いています。callback.applyはノードjsの関数ではありません

しかし、これはエラーを示します。TypeError:callback.applyは関数ではありません。私はこれに慣れていない。誰でもこのエラーを解決できますか?

code

router.post("/saveMCQAnswer", function(req, res) { 

Survey.findOneAndUpdate(
    { "_id": '0001'}, 
    { "surveyname": 's1' }, /* <query> */ 
    { /* <update> */ 
     "$push": { 
      "replies": { 
       "_id" : 'R001', 
        "answers": { 
        "_id" : 'A001', 
        "answer" : 'answer' 
        } 
      } 
     } 
    }, 
    { "upsert": true }, /* <options> */ 
    function(err, doc){ /* <callback> */ 
     if(err) res.json(err); 
     else 
      req.flash('success_msg', 'Question saved to QBank'); 
     res.redirect("/"); 
    } 
); 

}); 

答えて

3

あなたが問題を引き起こしている余分なクエリパラメータを持っています。最初のクエリオブジェクトに移動します。

router.post("/saveMCQAnswer", function(req, res) { 
    Survey.findOneAndUpdate(
     { /* <query> */ 
      "_id": '0001', 
      "surveyname": 's1' // <-- fix here 
     }, 
     { /* <update> */ 
      "$push": { 
       "replies": { 
        "_id" : 'R001', 
        "answers": { 
         "_id" : 'A001', 
         "answer" : 'answer' 
        } 
       } 
      } 
     }, 
     { "upsert": true }, /* <options> */ 
     function(err, doc){ /* <callback> */ 
      if(err) res.json(err); 
      else 
       req.flash('success_msg', 'Question saved to QBank'); 
      res.redirect("/"); 
     } 
    ); 
}); 
関連する問題