Mongodb findOneAndUpdate не работает - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь обновить документ в коллекции mongodb, но он не работает для меня. Вот функция, все поля находятся в бэкэнде. Я использую mlab онлайн монго дб

router.post(
  '/accept',
  (req,res) => {
    const leaveFields = {};
    leaveFields._id = req.body.id;
    leaveFields.name = req.body.name;
    leaveFields.reason = req.body.reason;
    leaveFields.from = req.body.from;
    leaveFields.to = req.body.to;
    leaveFields.user_id = req.body.user_id;
    leaveFields.leaveType = req.body.leaveType;
    console.log(req.body.id);
    Leave.find({user_id:req.body.user_id})  //{ "_id":ObjectId("req.body.id") }
      .then(leave =>{
        if(leave){
          Leave.findOneAndUpdate(
            {_id : req.body.id},
            {$set : leaveFields},
            {new : true}
        )}else{
          res.status(400).json(errors);
        }
      }
        )
      .catch(err=>res.status(404).json({ noleavefound: 'No leaves found' }));

1 Ответ

0 голосов
/ 04 июля 2018

Здесь вы устанавливаете _id для объекта leftfields и

const leaveFields = {};
leaveFields._id = req.body.id;

здесь вы передаете поле _id и вашему обновлению.

{$set : leaveFields}

Поле _id является неизменным. Итак, исключите поле _id и затем проверьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...