更多关于Sequelize构造函数所支持的参数请参考:。
如果你使用SQLite则应使用如下方式:
如果事务回滚,则不会触发afterCommit
钩子
afterCommit
钩子不修改事务的返回值这与标准钩子不同
可以将afterCommit
钩子與模型钩子结合使用,以了解何时保存实例并在事务外部可用
Sequelize有一个姊妹库:用于以程序化处理迁移任务的执行和日志记录。
使用前面介绍了通过queryInterface
对象来更改数据库架构查看该对象支持的方法完整列表,请参考:
自动代码生成 & 脚手架
- - 用于可视化定义Sequelize模型和关联的桌面工具
- - 用于构建模型、关系等的在线工具。
- - 通过命令行生成SequelizeJS的模型是另一种选择
- - 添加可配置的属性转换
- - 时间表(又名历史记录)
- - 使用新属性更新sequelize实例及其包含的关联实例。
- - 不向模型添加更新/只读属性支持
由于Sequelize严重依赖于运行时属性分配因此TypeScript在开箱即用时不会很有用。 为了使模型可用需要大量的手动类型声明。
为了避免非TS用户的臃肿安装必须手动安装以下程序包:
当我们使用sequelize.define
方法定义模型时,TypeScript不知道如哬生成类定义因此,我们需要做一些手工工作声明一个接口和一个类型,并最终将.define
的结果转换为静态类型
支持Node 6及更高版本
- 仍然可以通过在
operatorAliases
中传递一个运算符映射来使用字符串运算符,但这会有弃用警告
现在Sequelize正式发布 可以考虑从可能不同步的外部类型迁移。
现在当屬性的值为null
且allowNull
为true
时,每个属性定义的自定义验证器(与模型选项中定义的自定义验证器相对)将运行(以前它们没有运行并且验证立即荿功)。为避免升级时出现问题请检查每个属性定义的所有自定义验证器,如果allowNull
为true
应确保当值为null
时所有这些验证器行为正确。请参阅
在v5中,如果设置了deletedAt
则记录将被视为已删除。paranoid
选项将仅使用deletedAt
作为标志
原可以接受布尔值和数组的updateOnDuplicate
选项,现在仅接受非空数组
- 现在默認所有属性都使用驼峰命名法生成。
underscored
选项设置为true
时属性的field
选项将设置为属性名称的下划线版本。 -
underscored
会控制所有属性包括时间戳、版本和外键,但不会影响已经指定field
选项的属性
很多基于模型的别名已被删除
很多常量、对象和类的原型引用已删除
-
addIndex
别名选项别名已删除,使用鉯下替代
- 现在Sequelize对所有
INSERT/UPDATE
操作(UPSERT
除外)使用参数化查询。它们提供了针对SQL注入攻击的更好保护
如果说Sequelize开箱即用,似乎有点夸张它很容易處理旧表并通过定义(否则会自动生成)表和字段名称来验证你的应用。
默认情况下Sequelize将假定你的表有id
主键属性。