Sequelize


SQL文を学ぶことは非常に価値があります.でも主にJavascriptを使っています私以外にもSQL文をJavaScriptとして使いたい人もいるかもしれません.
Javascriptで作成するとSQL文に自動的に置き換えられるSequeizeライブラリです.

設定


sequelizeが必要なファイルにsequelizeをインストールします.
npx npm install --save sequelize
sequelizeをインストールすると、モデル、移行、構成、およびシードファイルが作成されます.
config/config.jsonのファイルは次のようになります.
{
  "development": {
    "username": mysql 유저이름,
    "password": 내 비밀번호,
    "database": 내가 쓸 데이터베이스 이름,
    "host": 호스트주소,
    "dialect": "mysql"
  },
 ....
  }
}
sequelize-cliは、jsでSQL文を作成および更新するのに役立ちますので、インストールできます.
npm install --save-dev sequelize-cli

コンポーネント


Model


terminalまたはthrowでデータベースを作成すると、データベースはモデルとして保存されます.このモデルはSQLのテーブルに対応しています.
  • npx sequelize-cli --help
  • npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
    このコマンドを使用して、モデルと移行を作成します.
    
    //model
    
    'use strict';
    const {
      Model
    } = require('sequelize');
    module.exports = (sequelize, DataTypes) => {
      class User extends Model {
        /**
         * Helper method for defining associations.
         * This method is not a part of Sequelize lifecycle.
         * The `models/index` file will call this method automatically.
         */
        static associate(models) {
         
        }
      };
      User.init({
        firstName: DataTypes.STRING,
        lastName: DataTypes.STRING,
        email: DataTypes.STRING
      }, {
        sequelize,
        modelName: 'User',
      });
      return User;
    };
    //migrations
    
    'use strict';
    module.exports = {
      up: async (queryInterface, Sequelize) => {
        await queryInterface.createTable('Users', {
          id: {
            allowNull: false,
            autoIncrement: true,
            primaryKey: true,
            type: Sequelize.INTEGER
          },
          firstName: {
            type: Sequelize.STRING
          },
          lastName: {
            type: Sequelize.STRING
          },
          email: {
            type: Sequelize.STRING
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          
        });
      },
      down: async (queryInterface, Sequelize) => {
        await queryInterface.dropTable('Users');
      }
    };

    migrations


    モデルがテーブルにデフォルトのフォームを作成した場合、移行は複数のコマンドでテーブルを作成し、テーブルを削除し、要素を追加します.
    module.exports = {
      up: async (queryInterface, Sequelize) => {
        await queryInterface.createTable('Users', {
          id: {
            allowNull: false,
            autoIncrement: true,
            primaryKey: true,
            type: Sequelize.INTEGER
          },
          firstName: {
            type: Sequelize.STRING
          },
          lastName: {
            type: Sequelize.STRING
          },
          email: {
            type: Sequelize.STRING
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          
        });
      },
      down: async (queryInterface, Sequelize) => {
        await queryInterface.dropTable('Users');
      }
    };
    上で、createTableでテーブルを作成し、droptableでテーブルを削除します.
    またはsequelize-cliを使用して新しい移行を作成します.
    npx sequelize-cli migration generate --name test
    module.exports = {
      up: async (queryInterface, Sequelize) =>{
        
      }
      ,
      down : async (queryInterface, Sequelize) => {
        
      }
    }
    upセクションには、移行時のコマンドが含まれています.
    downセクションには、移行を取り消すコマンドが含まれています.
    次のデータが含まれます.
    sequelize-cliコマンドは、移行構文をSQL構文に変換し、MySQLに格納します.
    npx sequelize-cli db:migrate 
    
    migration 에서 up 부분 실행 및 migrating 실행
    npx sequelize-cli db:migrate:undo
    
    migration에서 down부분 실행 및 최근 migration 취소
    SQL構文を使用しなくてもjsでvscodeでデータベースを使用できるSequelizeについて理解しました.間違ったところがあれば積極的にコメントしてください!ありがとうございます.