Skip to the content.

Upgrade to v7 - 升级到 V7

Sequelize v7 是 v6 之后的下一个主要版本. 以下列出了一些重大更改以帮助你进行升级.

重大变化

支持 Node 12 以及更高

Sequelize v7 将只支持那些与 ES 模块规范兼容的 Node.js 版本, 版本 12 及更高版本#5.

TypeScript 转换

v7 的主要基础代码更改之一是迁移到 TypeScript. 结果就是, 以前在 JavaScript 代码库之上的尽力而为猜测的手动类型, 已被删除, 所有类型现在都直接从实际的 TypeScript 代码中检索. 你可能会发现许多微小的差异, 但它们应该很容易修复.

ConnectionManager 的更改

仅当你直接使用 ConnectionManager 时, 这才会对你产生影响.

ConnectionManager#getConnection: type 选项现在接受 'read' | 'write' 而不是 'SELECT' | any. 它已经在 v6 中记录, 但实现与文档不匹配.

// 而不是这样做:
sequelize.connectionManager.getConnection({ type: 'SELECT' });

// 这样做:
sequelize.connectionManager.getConnection({ type: 'read' });

Microsoft SQL Server 支持

Sequelize v7 完全支持 MS SQL Server 2017(版本 14), Sequelize v6 从 2012(版本 13)开始 , 符合微软自己的主流支持.

不会在内部调用重写的模型方法

Model.findOneModel.findAll 分别被 Model.findByPkModel.findOne 使用. 这被认为是一个细节实现, 因此, 从 Sequelize v7 开始, Model.findByPkModel.findOne 不会覆盖任何一个在这些方法中的内部调用.

换句话说, 这样做不会破坏:

class User extends Model {
  static findOne() {
    throw new Error('Do not call findOne');
  }
}

// 这会在 v6 中抛出 "Do not call findOne"
// 但它在 v7 中有效
User.findByPk(1);