2013-02-27 2 views
31

Я пытаюсь использовать 'findOneAndUpdate' в mongoose, и обновленный объект JS, который я отправляю, не сохраняется в mongo. Я не получаю сообщение об ошибке при сохранении, но я возвращаю нуль для обновленного объекта. Любые идеи, что я могу делать неправильно? Это пример, который пытается обновить весь объект, сохраненный в mongo, т. Е. Переписать объект name.Mongoose findOneAndUpdate не работает

var query = {"_id": id}; 
var update = {name: {first: 'john', last: 'smith'}}; 
var options = {new: true}; 
People.findOneAndUpdate(query, update, options, function(err, person) { 
    if (err) { 
    console.log('got an error'); 
    } 

    // at this point person is null. 
}); 

ответ

26

Оказывается, что идентификатор, который я искал, не существовал, следовательно, возвращался null. Работает так, как ожидалось!

+0

Пожалуйста, отметьте свой ответ как принятый. – verybadalloc

+1

Очевидно, если у вашего документа больше полей, все они будут удалены. Я уверен, что это то, чего можно было бы избежать каким-то образом, но –

+7

@SergioMajluf Вы можете использовать $ set для обновления только необходимых полей. – Haywire

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