Sequelize官方中文文档 13. Upgrade to V5 - 升级到 V5

Sequelize官方中文文档 13. Upgrade to V5 - 升级到 V5,第1张

Sequelize v5 是 v4 之后的下一个主要版本

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

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

对于 v5

对于 v5 Sequelize现在使用 sequelize-pool ,它是 [email protected] 的现代化分支。 你不再需要调用 sequelize.close 来关闭池,这有助于 lambda 执行。 #8468 。

验证器

现在,当属性的值为 null 且 allowNull 为 true 时,运行每个属性定义的自定义验证器(与模型选项中定义的自定义验证器相对,之前它们没有运行且验证立即成功)。为了避免升级时出现问题,请检查每个属性定义的所有自定义验证器,其中 allowNull 为 true ,并确保当值为 null 时所有这些验证器都能正常运行。 参见 #9143 。

属性

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

注意 : 请不要将它与 options.attributes 混淆,它们仍然有效

偏执模式

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

Model.bulkCreate

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

下划线模式

Model.options.underscored 的实现方式被改变了。你可以在 这里 找到完整的说明 。

大致内容

#9304

删除的别名

许多基于模型的别名已被删除 #9372

范畴

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

网络类型

为 Postgres 添加了对 CIDR , INET 和 MACADDR 的支持

不区分大小写的文本

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

已删除

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

删除的别名

Hooks aliases has been removed #9372

删除的别名

已删除许多常量,对象和类的原型引用 #9372

安装非简单:

$ npm install --save co

$ npm install --save sequelize

$ npm install --save mysql

代码模板:

var Sequelize = require('sequelize')

var co = require('co')

co(function* () {

// code here

}).catch(function(e) {

console.log(e)

})

基本Sequelize *** 作都返Promiseco框架面直接进行yield非便

建立数据库连接

var sequelize = new Sequelize(

'sample', // 数据库名

'root', // 用户名

'zuki', // 用户密码

{

'dialect': 'mysql', // 数据库使用mysql

'host': 'localhost', // 数据库服务器ip

'port': 3306, // 数据库服务器端口

'define': {

// 字段划线(_)割(默认驼峰命名风格)

'underscored': true

}

}

)

定义单张表

Sequelize:

var User = sequelize.define(

// 默认表名(般写单数)自转换复数形式

// 值作访问模型相关模型属性名所建议用写形式

'user',

// 字段定义(主键、created_at、updated_at默认包含用特殊定义)

{

'emp_id': {

'type': Sequelize.CHAR(10), // 字段类型

'allowNull': false, // 否允许NULL

'unique': true // 字段否UNIQUE

},

'nick': {

'type': Sequelize.CHAR(10),

'allowNull': false

},

'department': {

'type': Sequelize.STRING(64),

'allowNull': true

}

}

)

SQL:

CREATE TABLE IF NOT EXISTS `users` (

`id` INTEGER NOT NULL auto_increment ,

`emp_id` CHAR(10) NOT NULL UNIQUE,

`nick` CHAR(10) NOT NULL,

`department` VARCHAR(64),

`created_at` DATETIME NOT NULL,

`updated_at` DATETIME NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB

几点说明:

建表SQL自执行意思主调用sync候类似:User.sync({force: true})(加force:true先删掉表再建表)我先定义表结构再定义Sequelize模型用sync两者定义阶段没关系直我真始 *** 作模型才触及表 *** 作我要尽量保证模型表同步(借助些migration工具)自建表功能风险使用需谨慎

所数据类型请参考文档数据类型

模型定义虚拟属性、类、实例请参考文档:模型定义

其些特殊定义所示:

var User = sequelize.define(

'user',

{

'emp_id': {

'type': Sequelize.CHAR(10), // 字段类型

'allowNull': false, // 否允许NULL

'unique': true // 字段否UNIQUE

},

'nick': {

'type': Sequelize.CHAR(10),

'allowNull': false

},

'department': {

'type': Sequelize.STRING(64),

'allowNull': true

}

},

{

// 自定义表名

'freezeTableName': true,

'tableName': 'xyz_users',

// 否需要增加createdAt、updatedAt、deletedAt字段

'timestamps': true,

// 需要createdAt字段

'createdAt': false,

// updatedAt字段改名

'updatedAt': 'utime'

// deletedAt字段改名

// 同需要设置paranoidtrue(种模式删除数据进行物理删除设置deletedAt前间

'deletedAt': 'dtime',

'paranoid': true

}

)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11277504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存