在 sequelize.define() 函数的内部应该写些什么内容?

因为不太清楚应该在sequelize.define的内部写什么,所以我记了个笔记。

模型名称

const aaa = sequelize.define(
    'bbb',//モデル名
    {

})

听说要在上述的bbb地方写上模型名称。

模特是什么?

我使用Sequelize时有这样的描述。

尝试使用Sequelize

尝试创建模型
虽然我不喜欢使用“表=模型”这种表达方式,但我会选择按照当地的习俗来创建模型。

根据观察,可以得出结论,即表格=模型。但仅凭此还不能做出判断,所以我尝试寻找是否存在其他类似的信息,并找到了一篇明确说明此事的页面。

建模 | Sequelize

模型 | Sequelize

模型
模型代表着数据库中的一张表。该类的实例代表着数据库中的一行数据。

因此,从这件事中我们了解到模型即数据库内的表格。

const aaa = sequelize.define(
    'bbb',//テーブル名 ← 「モデル名」から「テーブル名」に変更
    {

})

我对此进行了如下的解释。

{}的内容

const aaa = sequelize.define(
    'bbb',//テーブル名
    {
        ----ここ----
})

因为不知道下一步应该写什么,所以我会尝试查一下。

这里的写法

经过看了许多不同的例子后,我对这个问题有一点点的理解。

const Sequelize = require('sequelize');

const aaa = sequelize.define(
    'bbb',//テーブル名
    {
        ccc:{//テーブル内にあるcccという行の設定
            type:Sequelize.INTEGER,//行のタイプを設定
            primaryKey: true,//cccと言う行を主キーに設定
            autoIncrement: true//idなどを指定する時によく使う自動で数が増えていくやつをtrueに設定
        },
        ddd:{//テーブル内にあるdddという行の設定
            type: Sequelize.TEXT//行のタイプを設定

        }
});

设置列表

Manual | Sequelize

ValidateMe.init({
bar: {
type: Sequelize.STRING,
validate: {
is: [“^[a-z]+$”,’i’], // 只允许字母
is: /^[a-z]+$/i, // 同上一个例子, 使用实际正则表达式
not: [“[a-z]”,’i’], // 不允许字母
isEmail: true, // 验证邮件格式(foo@bar.com)(仅允许邮件地址)
isUrl: true, // 验证URL格式(http://foo.com)(仅允许URL)
isIP: true, // 验证IPv4(129.89.23.1)或IPv6格式(仅允许IP地址)
isIPv4: true, // 只允许IPv4地址
isIPv6: true, // 只允许IPv6地址
isAlpha: true, // 只允许字母
isAlphanumeric: true, // 只允许字母和数字。例如 “_abc” 不会通过验证。
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, // 只允许小于等于23的值
min: 23, // 只允许大于等于23的值
isCreditCard: true, // 验证有效的信用卡号码
}
}
})

uuid是什么意思?

UUID是一个IT术语词典,你可能会“大致理解”它,即使你真的“不理解”,你也会感觉“理解了”。
UUID是指任何时间、任何人都可以创建的ID,但所创建的ID在全世界都不会重复。

其他数据类型

手册 | Sequelize

Sequelize.STRING // VARCHAR(255)
Sequelize.STRING(1234) // VARCHAR(1234)
Sequelize.STRING.BINARY // VARCHAR BINARY
Sequelize.TEXT // TEXT
Sequelize.TEXT(‘tiny’) // TINYTEXT
Sequelize.CITEXT // CITEXT 仅适用于PostgreSQL和SQLite。

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

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

Sequelize.REAL // REAL 仅适用于PostgreSQL。
Sequelize.REAL(11) // REAL(11) 仅适用于PostgreSQL。
Sequelize.REAL(11, 12) // REAL(11,12) 仅适用于PostgreSQL。

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

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

Sequelize.DATE // 对于mysql / sqlite,它是DATETIME,对于postgres,它是TIMESTAMP WITH TIME ZONE
Sequelize.DATE(6) // 对于mysql 5.6.4+,它是DATETIME(6)。支持高达6位精度的小数秒。
Sequelize.DATEONLY // 仅日期,无时间。
Sequelize.BOOLEAN // TINYINT(1)

Sequelize.ENUM(‘value 1’, ‘value 2’) // 枚举,允许的值为”value 1″和”value 2″
Sequelize.ARRAY(Sequelize.TEXT) // 定义数组。仅适用于PostgreSQL。
Sequelize.ARRAY(Sequelize.ENUM) // 定义枚举数组。仅适用于PostgreSQL。

Sequelize.JSON // JSON列。仅适用于PostgreSQL、SQLite和MySQL。
Sequelize.JSONB // JSONB列。仅适用于PostgreSQL。

Sequelize.BLOB // BLOB(PostgreSQL则为bytea)
Sequelize.BLOB(‘tiny’) // TINYBLOB(PostgreSQL则为bytea)。其他选项为medium和long。

Sequelize.UUID // PostgreSQL和SQLite的UUID数据类型,MySQL的CHAR(36)BINARY(使用Sequelize.UUIDV1或Sequelize.UUIDV4作为defaultValue,Sequelize将自动生成ID)

Sequelize.CIDR // PostgreSQL的CIDR数据类型
Sequelize.INET // PostgreSQL的INET数据类型
Sequelize.MACADDR // PostgreSQL的MACADDR数据类型

Sequelize.RANGE(Sequelize.INTEGER) // 定义int4range范围。仅适用于PostgreSQL。
Sequelize.RANGE(Sequelize.BIGINT) // 定义int8range范围。仅适用于PostgreSQL。
Sequelize.RANGE(Sequelize.DATE) // 定义tstzrange范围。仅适用于PostgreSQL。
Sequelize.RANGE(Sequelize.DATEONLY) // 定义daterange范围。仅适用于PostgreSQL。
Sequelize.RANGE(Sequelize.DECIMAL) // 定义numrange范围。仅适用于PostgreSQL。

Sequelize.ARRAY(Sequelize.RANGE(Sequelize.DATE)) // 定义tstzrange范围的数组。仅适用于PostgreSQL。
Sequelize.GEOMETRY // 空间列。仅适用于PostgreSQL(带有PostGIS)或MySQL。
Sequelize.GEOMETRY(‘POINT’) // 带有几何类型的空间列。仅适用于PostgreSQL(带有PostGIS)或MySQL。
Sequelize.GEOMETRY(‘POINT’, 4326) // 带有几何类型和SRID的空间列。仅适用于PostgreSQL(带有PostGIS)或MySQL。

bannerAds