ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nodejs: Sequelize를 이용한 사용자 모델 생성
    Nodejs 2021. 8. 10. 17:51

    이번 포스팅에서는 mysql, sequelize를 이용하여 사용자 모델을 생성, 수정, 및 테이블 적용을 다룬다.   

     

    sequelize 사용 환경 설정이 안되어있다면 다음을 참고  

     

    Nodejs: Mysql사용을 위한 Sequelize 설정

    이번 포스팅은 Mysql사용을 위한 Sequelize 설정에 대해 다룬다. (mysql 서버 세팅은 생략한다)  1. 필요한 모듈 설치 sequelize, mysql2, sequelize-cli를 설치한다. sequelize-cli는 npx sequelize 커맨드를 사..

    seungjuitmemo.tistory.com

     

     

     

    1. User 모델 생성

     

    다음 커맨드를 통해 User라는 모델을 생성한다.   

     

    npx sequelize model:generate --name User --attributes email:string,nickname:string,password:string

     

    models 폴더에 user.js가 생기고, migrations 폴더에 숫자-create-user.js 이름으로 파일이 생성된다. 

     

    • models/user.js 의 역할:
      • 데이터베이스에 읽고 쓰고, 변경하는 데이터를 모델이라는 형태로 구현
    • migrations 내부 파일 역할:
      • 데이터베이스에 테이블을 생성하고 제거할 때 여기에 있는 파일을 사용

     

     

     

    2. 모델 수정하기 

     

    id대신 userId를 추가한 사용자 모델을 만들어보자. 

    (기존에 Sequelize를 사용하여 모델을 만들면 "id"라는 키를 모델 데이터의 ID로 사용하도록 기본 설정이 되어있다)

     

    models/user.js 파일 수정 

    '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) {
          // define association here
        }
      };
      User.init({
        userId: {   // 추가한 부분
          primaryKey: true,
          type: DataTypes.INTEGER,
        },
        email: DataTypes.STRING,
        nickname: DataTypes.STRING,
        password: DataTypes.STRING
      }, {
        sequelize,
        modelName: 'User',
      });
      return User;
    };

     

    migrations/숫자-create-user.js 파일 수정

    'use strict';
    module.exports = {
      up: async (queryInterface, Sequelize) => {
        await queryInterface.createTable('Users', {
          userId: {  // 수정한 부분 
            allowNull: false,
            autoIncrement: true,
            primaryKey: true,
            type: Sequelize.INTEGER
          },
          email: {
            type: Sequelize.STRING
          },
          nickname: {
            type: Sequelize.STRING
          },
          password: {
            type: Sequelize.STRING
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
          }
        });
      },
      down: async (queryInterface, Sequelize) => {
        await queryInterface.dropTable('Users');
      }
    };

     

    createdAt과 updatedAt을 따로 만들지 않았음에도 존재하는 이유는 

    sequelize에서는 createdAt과 updatedAt 필드를 따로 생성하여 관리해주기 때문이다.  

     

     

     

    3. 테이블 생성하기 

     

    현재까지 만들어지 모델을 테이블에 적용하여 만들어보자. 

     

    npx sequelize db:migrate

     

    migrate에 성공하면 다음과 같은 문구가 나온다. 

     

    생성된 Users 테이블 확인 

     

    반응형

    'Nodejs' 카테고리의 다른 글

    Nodejs: Prettier 사용하기  (0) 2021.08.31
    Nodejs: socket.io 모듈 사용 정리  (0) 2021.08.16
    Nodejs: Mysql사용을 위한 Sequelize 설정  (0) 2021.08.10
    Nodejs JWT(JsonWebToken) 정리  (0) 2021.07.31
    ES6 Javascript 문법 정리  (0) 2021.07.20

    댓글

Designed by Tistory.