node.js超入門ノート8(Sequelize導入編)


準備

以下のコマンドでインストールします。

npm install sequelize
npm install sequelize-cli

以下のコマンドでsequelizeを初期化します。

npx sequelize-cli init

config.jsonを以下のように修正します。

config/config.json
{
  "development": {
    "database": "db-development",
    "dialect": "sqlite",
    "storage": "db-dev.sqlite3"
  },
  "test": {
    "database": "db-test",
    "dialect": "sqlite",
    "storage": "db-test.sqlite3"
  },
  "production": {
    "database": "db-product",
    "dialect": "sqlite",
    "storage": "db.sqlite3"
  }
}

MySQLを使用する際は以下ように修正します。

{
    "username": 利用者名,
    "password": パスワード,
    "database": データベース名,
    "host": ホストのドメイン,
    "dialect": "mysql"
 }

postgresSQLを使用する際は以下ように修正します。

{
    "username": 利用者名,
    "password": パスワード,
    "database": データベース名,
    "host": ホストのドメイン,
    "dialect": "postgres"
 }

モデルの作成

ここではUserモデルを作成します。
以下のコマンドでモデルを作成します。

npx sequelize-cli model:generate --name User --attributes name:string,pass:string,mail:string,age:integer

以下のコマンドでマイグレーションを実行します。

npx sequelize-cli db:migrate --env development

シーディング

ダミーデータ用意します。
以下のコマンドでシーディングのスクリプトファイルを作成します。

npx sequelize-cli seed:generate --name sample-user

作成されたファイルをもとに以下を記載します。

seeders/sample-user.js
'use strict';

module.exports = {
  up: async (queryInterface, Sequelize) => {
    return queryInterface.bulkInsert('Users', [
      {
        name: 'Taro',
        pass: 'yamada',
        mail: '[email protected]',
        age: 39,
        createdAt: new Date(),
        updatedAt: new Date()
      },
      {
        name: 'Hanako',
        pass: 'flower',
        mail: '[email protected]',
        age: 28,
        createdAt: new Date(),
        updatedAt: new Date()
      },
      {
        name: 'Jiro',
        pass: 'change',
        mail: '[email protected]',
        age: 17,
        createdAt: new Date(),
        updatedAt: new Date()
      },
      {
        name: 'Sachiko',
        pass: 'happy',
        mail: '[email protected]',
        age: 6,
        createdAt: new Date(),
        updatedAt: new Date()
      }
    ]);
  },

  down: async (queryInterface, Sequelize) => {
    return queryInterface.bulkDelete('Users', null, {})
  }
};

以下のコマンドでシーディングを実行します。

npx sequelize-cli db:seed:all