2012-05-11 3 views
4

Я пишу базовое приложение с бэкэнд Express/NodeJs, который полагается на mongoDb (через mongoose) для хранения.Как правильно обновить запись?

Пришло время обновлять записи в базе данных, и я нажимаю на стену.

Код я написал это: https://gist.github.com/b90130f640cea75b0cbd

Я понимаю, что ошибка предотвращения обновления связано с тем, я передаю все поля, в том числе, не изменяемый «_id» один.

Что я прошу: есть ли способ передать все поля методу обновления, или я должен указать их по одному (или перебрать все из них)?

Заранее благодарю вас за помощь.

ответ

2

можно удалить _id перед передачей его model.update()

+0

Это хороший совет тоже Аарон. Благодарю. – CarmineM74

2

Вы можете просто upsert вместо обновления.

new User(req.body).save(); 

В любом случае, за исключением того, что req.body будет иметь правильные данные может привести к вопросам безопасности в зависимости от того, как ваши модели (GitHub была проблема, как это в последнее время).

Мой совет - получить только то, что вы хотите от req.body и обновления.

var updateData = { 
    name: req.body.name 
}; 
User.update({_id: user._id},updateData, function(err,affected) { 
    console.log('affected rows %d', affected); 
}); 
+0

Спасибо Bruno за указатель upsert! Полностью исчез из поля зрения. Возможно, в конце концов, было бы лучше попытаться пройти второй маршрут с помощью «грязного слежения за полем» на стороне backbonejs. – CarmineM74

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