sequelize有没有更改跟踪内置机制?

我想知道是否实施(或计划实施)任何更改跟踪机制,其目标是避免运行不必要的查询。 例如:

var user = sequelize.User.find { where: { name: 'bob' } }; user.name = 'john'; user.save(); 

续集将会更新用户名。 现在,想象一下这个任务是不存在的。

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

是sequelize足够聪明,弄清楚,不需要数据库更新(而不会做一个)? 是否有任何标记暴露在后续对象中,以查看是否对模型做了任何更改?

或者我应该简单地testing每个属性对原始模型?

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

您可以调用user.changed()来获取已更改的一组键。 不过,我认为调用.save()会触发保存,无论实例中是否有更改。