2016-06-24 3 views
0

Я новичок в мангуста, так что с учетом ...Mongoose автоинкремент путаница

Я пытаюсь обновить данные в документе, без успеха. Приведенный ниже код идентифицирует документ так, как я ожидаю, и изменяет модель как ожидаемую. Однако обновленная модель не сохраняется в MongoDB, и я затрудняюсь объяснить, почему ... (Возможно, я должен использовать инструкцию findOneAndUpdate, но работать по частям, как это легче следовать.)

UserModel.findOne({memberID: req.params.memberID}, function(err, foundObject) { 
     if(err) { 
      console.log('ERROR PUT:/updateUser -> ' + err); 
      res.status(500).send(); 
     } else { 
      if(!foundObject) { 
       console.log('ERROR - PUT:/updateUser, No such record -> ' + req.params.memberID); 
       res.status(500).send(); 
      } else { 
       console.log("1 :" + foundObject.info.fName); 
       if(req.body.fName) 
        foundObject.info.fName = req.body.fName; 
       console.log("2 :" + foundObject.info.fName); 

       foundObject.update(function(err, updatedObject) { 
        if(err) { 
         console.log('ERROR - PUT:/updateUser, SAVE FAIL -> ' + err); 
         res.status(500).send(); 
        } else { 
         res.status(200).send(updatedObject); 
        } 
       }); 
      } 
     } 
    }); 

выход из Почтальон (который я использую для проверки) является { «оК»: 1, «nModified»: 0, «п»: 1 } и прямой, консольный запрос на БД не показывает никаких изменений.

+1

Вместо foundObject.update попробовать с функцией foundObject.save. –

+0

Я вижу, что вы пытаетесь найти 1 запись и обновите ее. Тогда почему бы не использовать FindAnyModify? читайте больше на 'https: // docs.mongodb.com/manual/reference/method/db.collection.findAndModify /' –

+0

Что вы подразумеваете под путаницей автоинкремента? –

ответ

1

Можно попробовать этот.

UserModel.findOneAndUpdate({memberID: req.params.memberID}, {$set: {"info.fName" : req.body.fName}}, {new: true}) 
    .exec(function (error, updatedUser) { 
     if (error) { 
      return res.status(400).send({msg: 'Update failed'}); 
     } 
     return res.status(200).send(updatedUser); 
    }); 

N.B: Убедитесь, что req.params.memberID и req.body.fName правильно получил

+0

'' info.fName ": req.body.fName' – robertklep

+0

Typo :(thanks :) –

+0

Спасибо, ребята. Как обычно, я усложнял проблему – richardfr

Смежные вопросы