Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- react
- back-end
- 코틀린
- front-end
- Nest.js
- 반복문
- state
- spring boot
- 상속
- kafka
- Producer
- props
- AWS
- component
- file upload
- 자바
- SWIFT
- Sequelize
- Kotlin
- vue
- javascript
- 조건문
- 개발이 취미인 사람
- swagger
- 개발자
- java
- restful api
- It
- node.js
- class
Archives
- Today
- Total
개발이 취미인 사람
[Node.js] Sequelize Seeders 사용법 본문
반응형
- 개요
안녕하세요. 이번 시간에는 Sequelize에 Seeders라는 기술에 대해 알아보겠습니다.
우리는 어떤 기능 개발을 하다 보면 테스트 데이터가 필요할 때가 있습니다. 필요할 때마다 우리는 데이터 하나하나를 DB에 직접 넣는 수고를 겪을 수 있습니다.
이번 시간에 알아볼 Seeders난 기술은 이런 수고를 덜어줍니다. :)
- 사용법
Sequelize-cli 명령어를 통해 초기 세팅을 해줍니다.
sequelize init:seeders // seeders 폴더 생성
sequelize seed:generate --name Test // seeders 폴더 안에 새로운 Test.js 파일 생성
위 명령어를 실행하면 우리가 처음 sequelize init을 통해 만든 seeders 폴더 안에 새로운 파일이 생성됩니다.
Test.js 파일 구조
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
/**
* Add seed commands here.
*
* Example:
* await queryInterface.bulkInsert('People', [{
* name: 'John Doe',
* isBetaMember: false
* }], {});
*/
},
down: async (queryInterface, Sequelize) => {
/**
* Add commands to revert seed here.
*
* Example:
* await queryInterface.bulkDelete('People', null, {});
*/
}
};
- up 속성
- seeders를 통해 생성할 데이터 만드는 소스코드 로직
- down 속성
- seeders를 되돌릴 때 수행되는 로직
- 테스트 데이터 생성
const { uuid } = require('uuidv4');
const userId1 = uuid();
const userId2 = uuid();
const userId3 = uuid();
module.exports = {
up: async (queryInterface, Sequelize) => {
/**
* Add seed commands here.
*
* Example:
* await queryInterface.bulkInsert('People', [{
* name: 'John Doe',
* isBetaMember: false
* }], {});
*/
//유저 생성
await queryInterface.bulkInsert('Users',[
{
id: userId1,
email: "ryan@gmail.com",
password: "123456",
name: "Ryan1",
phone: "010-0000-0000",
createdAt: new Date,
updatedAt: new Date
},
{
id: userId2,
email: "ryan@gmail.com",
password: "123456",
name: "Ryan2",
phone: "010-0000-0000",
createdAt: new Date,
updatedAt: new Date
},
{
id: userId3,
email: "ryan@gmail.com",
password: "123456",
name: "Ryan3",
phone: "010-0000-0000",
createdAt: new Date,
updatedAt: new Date
},
])
},
down: async (queryInterface, Sequelize) => {
/**
* Add commands to revert seed here.
*
* Example:
* await queryInterface.bulkDelete('People', null, {});
*/
//유저 데이터 삭제
return queryInterface.bulkDelete('Users', null, {});
}
};
소스코드를 확인하면 bulkInsert와 bulkDelete 메서드를 확인할 수 있습니다.
bulkInsert는 기존에 우리가 알던 create 메서드랑 비슷하지만, DB에 한번 요청에 데이터를 여러 개를 저장할 수 있다는 부분은 다릅니다.
bulkDelete도 마찬가지입니다.
저의 전 글들을 읽어 오셨다면 위 코드가 잘 실행될 겁니다. 못 하신 분들은 아래 링크를 통해 확인하고 오세요:)
- Seeders 실행
sequelize db:seed:all
실행 결과
데이터가 추가 된 것을 확인할 수 있습니다.
- Seeders 되돌리기
sequelize db:seed:undo:all //모든 Seed를 되돌린다.
sequelize db:seed:undo // 가장 최근 Seed를 되돌린다.
sequelize db:seed:undo --seed name-of-seed-as-in-data 특정 Seed를 되돌린다.
실행 결과
기존에 있던 데이터가 삭제된 부분을 확인할 수 있습니다.
주의 사항
Seeders 되돌리기시 기존에 있는 데이터가 삭제되는 부분이 있기 때문에, 이 부분은 인지해야 됩니다. :)
'백앤드(Back-End) > Node.JS' 카테고리의 다른 글
[Node.js] babel 설정 (0) | 2021.04.16 |
---|---|
[Node.js] Sequelize Migration 사용법 (0) | 2021.02.13 |
[Node.js] Sequelize CRUD 사용법 (0) | 2021.02.12 |
[Node.js] Sequelize 관계성 정의 테이블간에 관계정의 (2) | 2021.02.11 |
[Node.js] Sequelize 모델 정의 및 옵션 설정 (2) | 2021.02.11 |