-
Nodejs: Sequelize를 이용한 사용자 모델 생성Nodejs 2021. 8. 10. 17:51
이번 포스팅에서는 mysql, sequelize를 이용하여 사용자 모델을 생성, 수정, 및 테이블 적용을 다룬다.
sequelize 사용 환경 설정이 안되어있다면 다음을 참고
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 - models/user.js 의 역할: