Skip to content

sequelize 5.0中文文档 5.0版本中升级,替换,移除的内容 (四) - node.js语言最好用的orm

--> -->

  • 文章目录

    • 前言
    • 对node的支持
    • 安全的运算符
    • Typescript支持
    • 连接池优化
    • 属性
    • 偏执模式
    • Model.bulkCreate
    • 下划线模式
    • 删除的别名
    • 数据类型
      • 范畴
      • 不区分大小写的文本
      • 已删除
      • Hooks
    • Sequelize类
    • 查询接口
  • 前言

最近把代码进行升级,原来旧版本的Sequelize 也一下升级的V5.0版本,
为了学习使用方便,统一把 Sequelize 5.0 更新,移除,替换,升级的内容标记一下.

对node的支持

Sequelize v5 将仅支持 Node 6 以及更高版本

安全的运算符

在 v4 中,就开始收到弃用警告 String based operators are now deprecated (基于字符串的运算符现在已弃用).
同时也介绍了运算符的概念.这些运算符是一些防止散列注入攻击的符号.

在V5 版本中,运算符默认启用.
你仍然可以通过在 operatorsAliases 中传递一个运算符映射来使用字符串运算符,但这会产生弃用警告.
Op.$raw 已被移除

Typescript支持

Sequelize 现在正式支持官方类型

连接池优化

对于 v5 Sequelize现在使用 sequelize-pool,它是 generic-pool@2.5 的现代化分支.
你不再需要调用 sequelize.close 来关闭池,这有助于 lambda 执行.

属性

Model.attributes 现在已被移除, 请使用 Model.rawAttributes

偏执模式

对于 v5 如果设置了 deletedAt, 该数据将被视为已删除. paranoid 选项只会使用 deletedAt 作为标志

Model.bulkCreate

updateOnDuplicate 选项用于接受布尔值和数组,现在只接受非空的数组属性

下划线模式

Model.options.underscored 的实现方式被改变了

  • underscoredAll 和 underscored 选项都合并为一个 underscored 选项
  • 现在,所有属性都默认使用 camelcase 命名生成. 将 underscored选项设置为 true,属性的 field 选项将被设置为属性名称的下划线版本.
  • underscored 将控制所有属性,包括时间戳,版本和外键. 它不会影响任何已经指定 field 选项的属性.

删除的别名

v5 删除官方替代
insertOrUpdateupsert
findfindOne
findAndCountfindAndCountAll
findOrInitializefindOrBuild
updateAttributesupdate
findById, findByPrimaryfindByPk
allfindAll
hookaddHook

数据类型

范畴

现在只支持一种标准格式 [{ value: 1, inclusive: true }, { value: 20, inclusive: false }]

不区分大小写的文本

为 Postgres 和 SQLite 添加了对 CITEXT 的支持

已删除

NONE 类型已被删除,请使用 VIRTUAL

Hooks

删除的别名

Rv5 删除官方替代
[after,before]BulkDelete[after,before]BulkDestroy
[after,before]Delete[after,before]Destroy

Sequelize类

删除的别名

v5 删除官方替代
Sequelize.prototype.UtilsSequelize.Utils
Sequelize.prototype.PromiseSequelize.Promise
Sequelize.prototype.TableHintsSequelize.TableHints
Sequelize.prototype.OpSequelize.Op
Sequelize.prototype.TransactionSequelize.Transaction
Sequelize.prototype.ModelSequelize.Model
Sequelize.prototype.DeferrableSequelize.Deferrable
Sequelize.prototype.ErrorSequelize.Error
Sequelize.prototype[error]Sequelize[error]
beforeConnectionbeforeConnect

查询接口

changeColumn不再使用_idx后缀生成约束. 现在Sequelize没有为约束指定任何名称,因此默认为数据库引擎命名.
这对齐了sync,createTable和changeColumn的行为.
addIndex 别名的参数别名已被删除,请改用以下内容.
indexName => name
indicesType => type
indexType/method => using