이번 포스팅은 heroku에서 데이터베이스를 만들고 sequelize로 세팅을 하는 법에 대해 알아볼 것입니다.
그 전에 postgresql를 구글에 검색해서 미리 다운을 받아주시는 걸 추천합니다(그리고 윈도우시라면 환경변수를 설정해주세요. 인터넷에 검색하면 나올겁니다). 그래야 직접 데이터베이스를 조작할 수 있습니다. 그리고 pg라는 패키지를 npm을 통해 받아주세요.
원래 제가 데이터베이스를 만들 때 MariaDB를 사용했는데 heroku에서 사용을 하려면 postgresql를 사용해야하는 것 같더라구요. 그래서 heroku에서 add-on 부분을 보면 postgres를 찾고 무료 버전을 선택해줬습니다. 그럼 자동으로 데이터베이스가 만들어지고 환경변수에 DATABASE_URL이 만들어져있을 겁니다.
(참고로 postgres를 사용하려면 결제할 카드를 heroku에 입력해줘야합니다. 무료를 쓰든 아니든...)
sequelize를 쓴다면 당연히 models와 config 폴더가 있을 겁니다. 기존에 써있는 코드는 그대로 두고 딱 두 부분만 바꿔줄 겁니다.
sequelize = new Sequelize(config.database, config.username, config.password, config);
models 폴더에 index.js 파일에 이런 게 써있을텐데 이거 대신에
let sequelize =null;
if (process.env.DATABASE_URL) {
sequelize =new Sequelize(process.env.DATABASE_URL, {
dialect: 'postgres',
native: true, //2021 5월에 추가: pg-native를 npm으로 설치해야함
protocol: 'postgres'
})
}
else {
sequelize =new Sequelize(config.database, config.username, config.password, config);
}
이렇게 바꿔줍니다.
그 다음은 config/config.js 파일을 바꿔줄겁니다.
"production": {
"username": "root",
"password": null,
"database": "myWeb_product",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
}
이렇게 되어있을 부분을
"production": {
"use_env_variable": "DATABASE_URL"
}
이렇게 간단하게 바꿔주면 배포할 때 알아서 작동이 됩니다.
참고로 데이터베이스를 수정하고 싶으시다면 터미널에 heroku pg:psql 을 입력해주세요.(만약 postgresql를 다운받지 않으셨다면 에러가 납니다)
그러면 자동으로 데이터베이스에 들어가질텐데 그 다음 수정해주시면 됩니다. 예를 들어 데이터베이스에 user라는 테이블의 특정 데이터를 수정하시고 싶으시면
UPDATE "user" SET nickname = 'Kihat' WHERE id = 1;
이런 식으로 해주시면 됩니다. 참고로 mariaDB를 사용할 때는 쌍따옴표가 필요없었는데 postgresql에서는 필요하더라고요. 안쓰면 user라는 테이블이 존재하지 않는다고 에러가 납니다.
오늘은 여기까지고 다음에는 Heroku에서 AWS S3를 사용하는 법에 대해 쓸 예정입니다.