Sequelize v6 是 v5 之后的下一个主要版本. 以下列出了一些重大更改以帮助你进行升级.
重大变化
支持 Node 10 以及更高
Sequelize v6 将支持 Node 10 及更高版本 #10821.
CLS
你现在应该使用 cls-hooked 软件包来支持 CLS.
const cls = require('cls-hooked'); const namespace = cls.createNamespace('....'); const Sequelize = require('sequelize'); Sequelize.useCLS(namespace);
Bluebird 现在支持 async_hooks. 调用 Sequelize.useCLS 时将自动启用此配置. 这样,不再需要使用 cls-bluebird.
模型
options.returning
参数 returning: true 将不再返回模型中未定义的属性. 之前旧的行为可以通过使用 returning: ['*'] 来实现.
Model.changed()
现在,此方法使用 _.isEqual 进行相等性测试,并且现在可以识别 JSON 对象. 修改 JSON 对象的嵌套值不会将其标记为已更改(因为它仍然是同一对象).
const instance = await MyModel.findOne(); instance.myJsonField.someProperty = 12345; // 更改为 12345 console.log(instance.changed()); // false await instance.save(); // 这不会保存任何东西 instance.changed('myJsonField', true); console.log(instance.changed()); // ['myJsonField'] await instance.save(); // 将会保存