node-sequelize学习笔记二(创建删除表安全检查表表列的数据类型)
Posted Angle_周先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node-sequelize学习笔记二(创建删除表安全检查表表列的数据类型)相关的知识,希望对你有一定的参考价值。
1、创建(sync)、删除表(drop)
sequelize.sync() //如果有表则跳过 sequelize.sync({ force: true }) - 将创建表,如果表已经存在,则将其首先删除 sequelize.sync({ alter: true }) - 这将检查数据库中表的当前状态(它具有哪些列,它们的数据类型等),然后在表中进行必要的更改以使其与模型匹配. sequelize.drop(); 删除所有表
sequelize替换为表名则执行单独表
2、安全检查
// 仅当数据库名称以 \'_test\' 结尾时,它才会运行.sync() sequelize.sync({ force: true, match: /_test$/ });
3、表列的数据类型
DataTypes.STRING // VARCHAR(255) DataTypes.STRING(1234) // VARCHAR(1234) DataTypes.STRING.BINARY // VARCHAR BINARY DataTypes.TEXT // TEXT DataTypes.TEXT(\'tiny\') // TINYTEXT DataTypes.BOOLEAN // TINYINT(1) DataTypes.INTEGER // INTEGER DataTypes.BIGINT // BIGINT DataTypes.BIGINT(11) // BIGINT(11) DataTypes.FLOAT // FLOAT DataTypes.FLOAT(11) // FLOAT(11) DataTypes.FLOAT(11, 10) // FLOAT(11,10) DataTypes.DOUBLE // DOUBLE DataTypes.DOUBLE(11) // DOUBLE(11) DataTypes.DOUBLE(11, 10) // DOUBLE(11,10) DataTypes.DECIMAL // DECIMAL DataTypes.DECIMAL(10, 2) // DECIMAL(10,2) DataTypes.INTEGER.UNSIGNED DataTypes.INTEGER.ZEROFILL DataTypes.INTEGER.UNSIGNED.ZEROFILL DataTypes.DATE // DATETIME 适用于 mysql / sqlite, 带时区的TIMESTAMP 适用于 postgres DataTypes.DATE(6) // DATETIME(6) 适用于 mysql 5.6.4+. 支持6位精度的小数秒 DataTypes.DATEONLY // 不带时间的 DATE DataTypes.UUID
4、表列的参数
实例化将自动将 flag 设置为 true (如果未设置) flag: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: true }, // 日期的默认值 => 当前时间 myDate: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, // 将 allowNull 设置为 false 将为该列添加 NOT NULL, // 这意味着如果该列为 null,则在执行查询时将从数据库引发错误. // 如果要在查询数据库之前检查值是否不为 null,请查看下面的验证部分. title: { type: DataTypes.STRING, allowNull: false }, // 创建两个具有相同值的对象将引发错误. // unique 属性可以是布尔值或字符串. // 如果为多个列提供相同的字符串,则它们将形成一个复合唯一键. uniqueOne: { type: DataTypes.STRING, unique: \'compositeIndex\' }, uniqueTwo: { type: DataTypes.INTEGER, unique: \'compositeIndex\' }, // unique 属性是创建唯一约束的简写. someUnique: { type: DataTypes.STRING, unique: true }, // 继续阅读有关主键的更多信息 identifier: { type: DataTypes.STRING, primaryKey: true }, // autoIncrement 可用于创建 auto_incrementing 整数列 incrementMe: { type: DataTypes.INTEGER, autoIncrement: true }, // 你可以通过 \'field\' 属性指定自定义列名称: fieldWithUnderscores: { type: DataTypes.STRING, field: \'field_with_underscores\' }, // 可以创建外键: bar_id: { type: DataTypes.INTEGER, references: { // 这是对另一个模型的参考 model: Bar, // 这是引用模型的列名 key: \'id\', // 使用 PostgreSQL,可以通过 Deferrable 类型声明何时检查外键约束. deferrable: Deferrable.INITIALLY_IMMEDIATE // 参数: // - `Deferrable.INITIALLY_IMMEDIATE` - 立即检查外键约束 // - `Deferrable.INITIALLY_DEFERRED` - 将所有外键约束检查推迟到事务结束 // - `Deferrable.NOT` - 完全不推迟检查(默认) - 这将不允许你动态更改事务中的规则 } },
以上是关于node-sequelize学习笔记二(创建删除表安全检查表表列的数据类型)的主要内容,如果未能解决你的问题,请参考以下文章