6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

sequelize.define()の中身って何を書けばいいの?

Last updated at Posted at 2020-07-14

sequelize.defineの中に何を書けばいいのかよくわからなかったのでメモ
#モデル名

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

上記でbbbになっているところにモデル名と言うモノを書くらしい。

モデルって何?

Sequelizeを使ってみたにはこのような記述がある

Sequelizeを使ってみた

モデルを作ってみる
「テーブル=モデル」という表現は嫌いなんですが、「郷に入っては郷に従え」という事でモデルを作るとあえて言います。

これを見る限り、テーブル=モデルという事になるが、これだけでは判断できないので、他にも同じような情報がないか探してみると明確に記載されているページを見つけた。

Model | 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
です。

その他データタイプ

#Manual | 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 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.

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?