2015-07-15 5 views
0

Вот код nodejs, который я использую для обновления документа в mongoDB, req.body содержит документ, который был отправлен в качестве почтового запроса на сервер nodejs, , он не бросает никаких ошибки, но не обновляя документ, любые предложения, почему это происходит;Mongoose не обновляет документ MongoDB

router.route('/results').post(function(req,res){ 
     var toupdate = req.body; 
     delete toupdate._id; 
     console.log(toupdate) 
     Question.update({_id:req.body._id}, toupdate, function(err){ 
      if(err){ 
       console.error(err.stack); 
      } 
     }); 
// even tried Question.update({_id:req.body._id}, {$set:{questions:toupdate.question}}); 
    }); 

Я также попытался с помощью findById, а затем сохранить документ на этот раз получили 500 в качестве ответа:

router.route('/results').post(function(req,res){ 
    var toupdate = req.body; 
    delete toupdate._id; 
    console.log(toupdate) 

    Question.findById(eq.body._id, function (err, tank) { 
     if (err){ 
       console.log(err.stack); 
       return handleError(err); 
      } 
    toupdate.save(function (err){ 
    if (err){ 
     console.log(err.stack); 
     return handleError(err); 
     } 
     }); 
    }); 
}); 
+0

Второй аргумент для обратного вызова содержит ответ. Вызывайте эту функцию (err, response) ', затем отлаживайте ее в' console.log (response.response) '. Существуют ключи в объекте, где «n» - это количество страниц, на которое влияет «nMatched», количество соответствий условия запроса. Скорее всего, вы не согласны с документом. Проверьте определение схемы для типа данных, которые у вас есть в '_id'. Это существующая коллекция? mongoose ожидает, что он будет называться «вопросами», а не «вопрос» по умолчанию, если вы не переопределите это. –

+0

получил undefined для console.log (res.response); нет никакой проблемы с схемой, поскольку я использую ее для поиска и вставки в другой маршрут в моем проекте, проблема возникает только в обновлении. –

+0

'response.response' является результатом обратного вызова' .update() '. Не 'res' в экспресс-запросе. –

ответ

0

Спасибо за поддержку, попробовал свое решение JohnnyHK, но он не работает, но не нашел способ обновления документа, должен был присвоить поля поля req.body полям объекта, здесь:

router.route('/results').post(function(req,res){ 
    Question.findOne(req.body._id, function (err, questions) { 
     if (err) return handleError(err.stack); 
       questions.question = req.body.question; 
       questions.options = req.body.options; 
       questions.difficulty = req.body.difficulty; 
       questions.type = req.body.type; 
       questions.answer = req.body.answer; 
       questions.domainof = req.body.domainof; 
       questions.topic = req.body.topic; 
       questions.weightage = req.body.weightage;   
       questions.created_by = req.body.created_by; 
    questions.save(function (err){ 
    if (err) return handleError(err.stack); 
     console.log(questions); 
     }); 
    }); 
}); 
Смежные вопросы