Skip to content

Latest commit

 

History

History
116 lines (102 loc) · 5.07 KB

200904.md

File metadata and controls

116 lines (102 loc) · 5.07 KB

Sequelize之二定义 mysql 数据表 json 模型

通过实例对象sequelize定义个简单的数据表

const User = sequelize.define('user', {  
    id: {  
        type: Sequelize.INTEGER,  // 整型数据
        allowNull: false,  // 是否允许为空并填充null
        autoIncrement: true,  // 自增
        primaryKey: true  // 主键
    },  
    email: {  
        type: Sequelize.STRING,  // 字符型数据
        allowNull: false,  
        validate: {         // 数据检查
            isEmail: true  
        } 
    },
    // 设置默认时间为当前时间,保存为mmmm-yy-dd:hh-mm-ss
    myDate: { 
        type: Sequelize.DATE, 
        defaultValue: Sequelize.NOW // 默认
    },
    // 设置时间为毫秒
    setDate: {
        type: Sequelize.DATE,
        defaultValue: Sequelize.NOW 
    }
})
//(加force:true,会先删掉表后再建表)。我们也可以先定义好表结构,再根据表结构定义Sequelize模型,这时可以不用sync。
User.sync({force: true}) 

数据类型对应数据库类型

Sequelize.STRING                      // VARCHAR(255)
Sequelize.STRING(1234)                // VARCHAR(1234)
Sequelize.STRING.BINARY               // VARCHAR BINARY
Sequelize.TEXT                        // TEXT
Sequelize.TEXT('tiny')                // TINYTEXT

Sequelize.INTEGER                     // INTEGER
Sequelize.BIGINT                      // BIGINT
Sequelize.BIGINT(11)                  // BIGINT(11)

Sequelize.FLOAT                       // FLOAT
Sequelize.FLOAT(11)                   // FLOAT(11)
Sequelize.FLOAT(11, 12)               // FLOAT(11,12)

Sequelize.REAL                        // REAL        PostgreSQL only.
Sequelize.REAL(11)                    // REAL(11)    PostgreSQL only.
Sequelize.REAL(11, 12)                // REAL(11,12) PostgreSQL only.

Sequelize.DOUBLE                      // DOUBLE
Sequelize.DOUBLE(11)                  // DOUBLE(11)
Sequelize.DOUBLE(11, 12)              // DOUBLE(11,12)

Sequelize.DECIMAL                     // DECIMAL
Sequelize.DECIMAL(10, 2)              // DECIMAL(10,2)

Sequelize.DATE                        // DATETIME for mysql / sqlite, TIMESTAMP WITH TIME ZONE for postgres
Sequelize.DATE(6)                     // DATETIME(6) for mysql 5.6.4+. Fractional seconds support with up to 6 digits of precision 
Sequelize.DATEONLY                    // DATE without time.
Sequelize.BOOLEAN                     // TINYINT(1)

Sequelize.ENUM('value 1', 'value 2')  // An ENUM with allowed values 'value 1' and 'value 2'
Sequelize.ARRAY(Sequelize.TEXT)       // Defines an array. PostgreSQL only.

Sequelize.JSON                        // JSON column. PostgreSQL only.
Sequelize.JSONB                       // JSONB column. PostgreSQL only.

Sequelize.BLOB                        // BLOB (bytea for PostgreSQL)
Sequelize.BLOB('tiny')                // TINYBLOB (bytea for PostgreSQL. Other options are medium and long)

Sequelize.UUID                        // UUID datatype for PostgreSQL and SQLite, CHAR(36) BINARY for MySQL (use defaultValue: Sequelize.UUIDV1 or Sequelize.UUIDV4 to make sequelize generate the ids automatically)


Sequelize.GEOMETRY                    // Spatial column.  PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY('POINT')           // Spatial column with geomerty type.  PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY('POINT', 4326)     // Spatial column with geomerty type and SRID.  PostgreSQL (with PostGIS) or MySQL only.

校验数据

is: ["^[a-z]+$",'i'],     // 只允许字母
is: /^[a-z]+$/i,          // 只允许字母
not: ["[a-z]",'i'],       // 不能使用字母
isEmail: true,            // 检测邮箱格式
isUrl: true,              // 检查Url格式 (http://foo.com) 
isIP: true,               // 检查 IPv4 或 IPv6 格式 
isIPv4: true,             // 检查 IPv4
isIPv6: true,             // 检查 IPv6
isAlpha: true,            // 不能使用字母
isAlphanumeric: true,     // 只允许字母数字字符
isNumeric: true,          // 只能使用数字
isInt: true,              // 只能是整数
isFloat: true,            // 只能是浮点数
isDecimal: true,          // 检查数字
isLowercase: true,        // 检查小写字母
isUppercase: true,        // 检查大写字母
notNull: true,            // 不允许null
isNull: true,             // 只能为null
notEmpty: true,           // 不能空字符串
equals: 'specific value', // 只能使用指定值
contains: 'foo',          // 必须包含子字符串
notIn: [['foo', 'bar']],  // 不能是数组中的任意一个值
isIn: [['foo', 'bar']],   // 只能是数组中的任意一个值
notContains: 'bar',       // 不能包含子字符串
len: [2,10],              // 值的长度必在 2 和 10 之间
isUUID: 4,                // 只能是UUID
isDate: true,             // 只能是日期字符串
isAfter: "2011-11-05",    // 只能使用指定日期之后的时间
isBefore: "2011-11-05",   // 只能使用指定日期之前的时间
max: 23,                  // 允许的最大值
min: 23,                  // 允许的最小值
isCreditCard: true,       // 检查是有效的信用卡