2017-03-08 47 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("/"); 
     } 
    ); 
});