Sequelize是否有内置的更改跟踪机制?

4
我想知道sequelize是否实现(或计划实现)任何更改跟踪机制,其目的是避免运行不必要的查询。例如:
var user = sequelize.User.find { where: { name: 'bob' } };

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

Sequelize 会自动更新用户名。现在,想象一下如果缺少了赋值操作。

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

user.save();

Sequelize是否足够智能,能够判断是否需要进行数据库更新(并且不会进行更新)? Sequelize对象中是否有任何标志可用于查看是否对模型进行了任何更改?

还是应该手动测试每个属性与原始模型进行比较?

我注意到sequelize模型中存在user._previousDataValues和user.options.isDirty属性,但我不确定它们的目的以及我是否应该以任何方式依赖我的代码。

1个回答

3
您可以调用user.changed()方法获取已更改的键数组。不过,我认为无论实例是否发生更改,调用.save()都会触发保存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接