Sequelize 튜토리얼(6)_코드로 seed 데이터 삽입

차분한열정·2021년 4월 7일
0

Sequelize 튜토리얼

목록 보기
6/14

이제 여러 테이블들을 만들었으니 각 테이블에 초기 데이터를 의미하는 seed 데이터를 넣어보겠습니다. 일단 Student 테이블에 row 하나를 추가하려면 이런 코드를 쓰면 됩니다.

// app.js
const db = require('./models/index.js');

const sequelize = db.sequelize;
const Student = db.Student;  // (1)

(async () => {
  await sequelize.sync({ force: true });
  const cheolsu = Student.build({  // (2)
    registrationNum: 20203718,
    name: '김철수',
    age: 22,
  });
  await cheolsu.save(); // (3) 
})();

(1)처럼 db 객체의 Student 모델 객체를 끄집어내서
(2)처럼 Student 모델 객체의 build라는 메소드를 호출해서 하나의 객체(Student 테이블에서 하나의 row가 될 존재)를 리턴하고
(3)처럼 해당 객체(cheolsu)의 save라는 메소드를 호출하면 됩니다. 이 save까지 호출해야 실제로 테이블에 row가 추가되는데요.

매번 강조하는 것처럼 지금 save 메소드는 Promise 객체를 리턴하는 메소드이기 때문에 그 앞에 await을 붙여준 것입니다.
그런데 build-save 이 순서대로 하지 않고

// app.js
const db = require('./models/index.js');

const sequelize = db.sequelize;
const Student = db.Student; 

(async () => {
  await sequelize.sync({ force: true });
  const cheolsu = await Student.create({  // 
    registrationNum: 20203718,
    name: '김철수',
    age: 22,
  });
  await cheolsu.save();
})();

이렇게 Student 모델의 create이라는 메소드를 쓰면 한번에 row를 추가하는 것도 가능합니다. 두 방법 다 모두 기억해두는 게 좋습니다.
자, 이제 특정 테이블에 row를 추가하는 방법을 배웠는데요. 이제 Student 테이블에 원하는 수만큼의 row 들을 추가할 수 있겠죠?

그런데 이렇게 row를 하나씩 삽입하는 방법 말고 한번에 여러 row를 삽입하는 방법도 있습니다. 바로 bulkCreate이라는 메소드를 사용하는 건데요.

// app.js
const db = require('./models/index.js');

const sequelize = db.sequelize;
const Student = db.Student;

(async () => {
  await sequelize.sync({ force: true });
  await Student.bulkCreate([ //
    {
      registrationNum: 20203718,
      name: '김철수',
      age: 22,
    },
    {
      registrationNum: 20208712,
      name: '이나라',
      age: 21,
    },
    {
      registrationNum: 20190124,
      name: '이태용',
      age: 23,
    },
    {
      registrationNum: 20180051,
      name: '최미나',
      age: 22,
    },
  ]);
})();

위에서처럼 bulkCreate 메소드를 호출하면서 이때 그 아규먼트로 여러 학생 정보가 담긴 배열을 넘겨주면 됩니다. 실제로 테이블을 확인해보면

여러 row들이 한번에 잘 삽입된 것을 알 수 있습니다. 이제 이런 방식으로 다른 테이블들에도 초기 데이터들을 삽입해주면 될 것 같은데요.

profile
성장의 기쁨

0개의 댓글