2015-02-16 4 views
2

Мне было интересно, будет ли в secelize реализовать (или планирует реализовать) механизм отслеживания изменений, целью которого было бы избежать запуска ненужных запросов. Например:Имеет ли secelize встроенный механизм отслеживания изменений?

var user = sequelize.User.find { where: { name: 'bob' } }; 

user.name = 'john'; 
user.save(); 

Последовательность будет, разумеется, обновлять имя пользователя. Теперь представьте, что уступка отсутствует.

var user = sequelize.User.find { where: { name: 'bob' } }; 

user.save(); 

Является ли продолжение настолько разумным, чтобы понять, что обновление базы данных не требуется (и не будет делать этого)? Есть ли какой-либо флаг, открытый объектом sequelize, чтобы увидеть, были ли какие-либо изменения внесены в модель?

Или нужно просто проверить вручную каждое свойство против оригинальной модели?

Я заметил user._previousDataValues ​​и user.options.isDirty свойства в модели sequelize, но я не уверен, какова их цель, и должен ли я полагаться на свой код на них каким-либо образом.

ответ

1

Вы можете вызвать user.changed(), чтобы получить массив ключей, которые были изменены. Тем не менее, я думаю, что вызов .save() вызовет сохранение независимо от того, было ли изменение в экземпляре.

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