knex seed

knex seed?

knex에서 seed를 사용하면 마이그레이션 파일과 상관없이 테스트 또는 시드 데이터로 데이터베이스를 체울 수 있습니다.

시드 파일 생성 방법

1
knex seed:make `생성할 파일 이름`

위 코드를 실행하면 다음과 같이 폴더와 파일이 생성됩니다.

seed의 디렉토리는 상대 경로 여야합니다.
따라서 ./seeds 의 경로에 파일이 생성됩니다.
seed파일은 생성할 파일 명을 바꿔서 실행하게 되면 여러개를 만들 수 있습니다.
seed파일의 실행은 migration과 다르게 사전순으로 실행됩니다.
사전순으로 실행 되기 때문에 foreign key로 연결되어 있다면 순서를 고려하여 seed 파일을 생성해야 합니다.

시드 사용 방법

1
2
3
4
5
6
7
8
9
10
exports.seed = function(knex, Promise) {
return knex('table_name').del()
.then(function () {
return knex('table_name').insert([
{id: 1, colName: 'rowValue1'},
{id: 2, colName: 'rowValue2'},
{id: 3, colName: 'rowValue3'}
]);
});
};

처음 seed를 생성하게 되면 위 코드와 같이 기본 seed파일이 생성됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const faker = require('faker')
const randomstring = require('randomstring')
exports.seed = function(knex, Promise) {
return knex('user')
.insert({
id: 'kim',
password: 'jeongwon'
})
.then(()=>{
const arr = []
for (var i = 0; i < 20; i++){
arr.push(
knex('url_entry')
.insert({
id: randomstring.generate(8),
long_url: faker.internet.url(),
user_id: 'fast'
})
)
}
return Promise.all(arr)
})
};

위 코드와 같이 원하는 데이터 생성을 원하는대로 넣고 실행하게 되면 dummy data를 생성 할 수 있습니다.
위에서 작성한 코드를 실행하려면 다음과 같이 터미널에서 실행하면 됩니다.

1
knex seed:run

위 코드를 실행하게 되면 MySQL서버에 dummy data가 들어가게 됩니다.

공유하기