Sequelize — model.update vs instance.update (правильный способ обновления)

#javascript #sql #node.js #sequelize.js

#javascript #sql #node.js #sequelize.js

Вопрос:

Каков правильный способ обновления строки в Sequelize.js ? Согласно документации, я могу сделать оба model.update или instance.update .

model.update — требуется только один вызов базы данных (я думаю), но он называется «массовым» обновлением, что не очень хорошо, когда у вас есть, например, хуки.

instance.update — сначала вам нужно найти эту строку, затем вы можете обновить, так что это 2, по крайней мере, 2 вызова. Это называется обычным одиночным обновлением, а не массовым.

У меня есть REST API со структурой CRUD. Создание не может быть выполнено иначе, чем mode.create и это имеет смысл. Но как насчет обновления. Каков правильный СПОСОБ обновления одной строки? Или это просто о моих потребностях, и это вопрос, основанный на мнении?

Ответ №1:

Ну, это, как вы говорите, больше зависит от ваших потребностей. Оба способа верны. Взяв из документации, первым способом instance.update

Это то же самое, что вызвать set, а затем вызвать save, но при этом сохраняются только точные значения, переданные ему, что делает его более атомарным и безопасным.

Это безопаснее для обновления записи. В вашем API вы можете установить parameter в качестве промежуточного программного обеспечения, поэтому при каждом вызове, например, update , findById и remove всегда сначала находите фактический объект и обновляйте или уничтожайте его там.

Для второго способа model.update

Обновите несколько экземпляров, которые соответствуют параметрам where.

Таким образом, вы можете просто обновить сразу с where условием.

Также помните, что первые параметры возвращают обновленный объект, а второй возвращает массив с числом того, сколько записей было выгружено.