sequelize 是否有任何更改跟踪内置机制?

Does sequelize have any change tracking built-in mechanism?

我想知道 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 属性,但我不确定它们的用途是什么以及我的代码是否应该以任何方式依赖它们。

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