LoginSignup
0
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-09-05

準備

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

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: 'taro@yamada.jp',
        age: 39,
        createdAt: new Date(),
        updatedAt: new Date()
      },
      {
        name: 'Hanako',
        pass: 'flower',
        mail: 'hanako@flower.jp',
        age: 28,
        createdAt: new Date(),
        updatedAt: new Date()
      },
      {
        name: 'Jiro',
        pass: 'change',
        mail: 'jiro@change.jp',
        age: 17,
        createdAt: new Date(),
        updatedAt: new Date()
      },
      {
        name: 'Sachiko',
        pass: 'happy',
        mail: 'sachiko@happy.jp',
        age: 6,
        createdAt: new Date(),
        updatedAt: new Date()
      }
    ]);
  },

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

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

npx sequelize-cli db:seed:all

0
2
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
0
2