Heroku postgresql 사용하기

강보석·2021년 8월 5일
1

✨소개

이번 포스팅은 heroku에서 데이터베이스를 만들고 sequelize로 세팅을 하는 법에 대해 알아볼 것입니다.

🎐PostgreSQL 다운

그 전에 postgresql를 구글에 검색해서 미리 다운을 받아주시는 걸 추천합니다(그리고 윈도우시라면 환경변수를 설정해주세요. 인터넷에 검색하면 나올겁니다). 그래야 직접 데이터베이스를 조작할 수 있습니다. 그리고 pg라는 패키지를 npm을 통해 받아주세요.

🎐Heroku에 Postgres 추가

원래 제가 데이터베이스를 만들 때 MariaDB를 사용했는데 heroku에서 사용을 하려면 postgresql를 사용해야하는 것 같더라구요. 그래서 heroku에서 add-on 부분을 보면 postgres를 찾고 무료 버전을 선택해줬습니다. 그럼 자동으로 데이터베이스가 만들어지고 환경변수에 DATABASE_URL이 만들어져있을 겁니다.

(참고로 postgres를 사용하려면 결제할 카드를 heroku에 입력해줘야합니다. 무료를 쓰든 아니든...)

✨변경해야할 사항

sequelize를 쓴다면 당연히 models와 config 폴더가 있을 겁니다. 기존에 써있는 코드는 그대로 두고 딱 두 부분만 바꿔줄 겁니다.

🎐Models 바꿔주기

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/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를 사용하는 법에 대해 쓸 예정입니다.

profile
안녕하세요. 컴퓨터를 공부하는 학생입니다.

0개의 댓글