sequelize.defineの中に何を書けばいいのかよくわからなかったのでメモ
#モデル名
const aaa = sequelize.define(
'bbb',//モデル名
{
})
上記でbbb
になっているところにモデル名
と言うモノを書くらしい。
モデルって何?
Sequelizeを使ってみたにはこのような記述がある
Sequelizeを使ってみた
モデルを作ってみる
「テーブル=モデル」という表現は嫌いなんですが、「郷に入っては郷に従え」という事でモデルを作るとあえて言います。
これを見る限り、テーブル=モデル
という事になるが、これだけでは判断できないので、他にも同じような情報がないか探してみると明確に記載されているページを見つけた。
#Model | Sequelize
Model
A Model represents a table in the database. Instances of this class represent a database row.#[翻訳](https://translate.google.co.jp/?hl=ja#view=home&op=translate&sl=en&tl=ja&text=A Model represents a table in the database. Instances of this class represent a database row.)
モデルは、データベース内のテーブルを表します。 このクラスのインスタンスは、データベース行を表します。
この事からモデル = データベース内のテーブル
という事が分かった
ので、
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, // 実際の正規表現を使用した前の例と同じ(Google翻訳ではあまり意味が理解できない文章になってしまった)
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のみを許可(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.STRING // VARCHAR(255) Sequelize.STRING(1234) // VARCHAR(1234) Sequelize.STRING.BINARY // VARCHAR BINARY Sequelize.TEXT // TEXT Sequelize.TEXT('tiny') // TINYTEXT Sequelize.CITEXT // CITEXT PostgreSQL and SQLite only.
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 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, 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) // 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') // 許可された値「値1」と「値2」を持つENUM
Sequelize.ARRAY(Sequelize.TEXT) // 配列を定義します。 PostgreSQLのみ。
Sequelize.ARRAY(Sequelize.ENUM) // ENUMの配列を定義します。 PostgreSQLのみ。
Sequelize.JSON // JSON列。 PostgreSQL、SQLite、およびMySQLのみ。
Sequelize.JSONB // JSONB列。 PostgreSQLのみ。
Sequelize.BLOB // BLOB(PostgreSQLの場合はbytea)
Sequelize.BLOB('tiny') // TINYBLOB (bytea for PostgreSQL. Other options are medium and long) TINYBLOB(PostgreSQLの場合はbytea。他のオプションは中長です)
Sequelize.UUID // PostgreSQLおよびSQLiteのUUIDデータ型、MySQLのCHAR(36)BINARY(>> defaultValue:Sequelize.UUIDV1またはSequelize.UUIDV4を使用して、sequelizeが自動的にIDを生成するようにします)
Sequelize.CIDR // PostgreSQLのCIDRデータ型
Sequelize.INET // INET datatype for PostgreSQL
Sequelize.MACADDR // MACADDR datatype for PostgreSQL
Sequelize.RANGE(Sequelize.INTEGER) // int4rangeの範囲を定義します。 PostgreSQLのみ。
Sequelize.RANGE(Sequelize.BIGINT) // Defined int8range range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DATE) // Defines tstzrange range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DATEONLY) // Defines daterange range. PostgreSQL only.
Sequelize.RANGE(Sequelize.DECIMAL) // Defines numrange range. PostgreSQL only.
Sequelize.ARRAY(Sequelize.RANGE(Sequelize.DATE)) // tstzrange範囲の配列を定義します。 PostgreSQLのみ。
Sequelize.GEOMETRY // Spatial column. PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY('POINT') // Spatial column with geometry type. PostgreSQL (with PostGIS) or MySQL only.
Sequelize.GEOMETRY('POINT', 4326) // Spatial column with geometry type and SRID. PostgreSQL (with PostGIS) or MySQL only.