Express와 PostgreSQL을 pg 모듈을 사용해서 연동하던 중
하나의 Query로 찾은 데이터를 다른 쿼리에서 사용해야하는 경우가 발생하였다.
저번에도 이런 경우가 있었는데 pg에 Query안에 또 Query를 하는 방법으로 구현하여 했으나
promise나 async를 사용해도 비동기가 잡히지 않아 SQL을 수정하여 해결하였다.
(사실 SQL을 수정하는게 맞긴한데 코드상 궁금하여 시도 해보았다)
무튼 이래 저래하다가 또 비슷한 경우가 발생해서 코드상으로 어떻게 해볼 수 있지 않을까
삽질하다가 코드로 해결하였다!
바로 pg-promise 모듈을 사용하는 것이다.
pg와 pg-promise의 차이점은
pg는 query가 비동기로 진행되는 반면 pg-promise는 promise로 구현이 되어 동기 처리가 가능하다!
아래는 pg vs pg-promise 다운로드 수를 보여준다.
pg-promise보다 pg를 더 많이 사용하는 거 같다.
무튼, pg-promise의 사용 방법은 다음과 같다.
1. 모듈 import 및 connection 설정
const pgp = require("pg-promise")();
const db = pgp('postgres://users:user1!@localhost:5432/postgres');
2. Query
db.one(`SELECT id FROM category WHERE title = '${data.category}'`)
.then(function(result){
/**
* 처리할 로직
*/
});
one하면 1개의 결과만 return해주고 any를 사용하면 복수개의 결과를 return 해준다.
promise를 지원하기 때문에 then 사용이 가능하다. then을 이용하여 동기처리를 해주자!
-끝-
'프로그래밍 > Node.js' 카테고리의 다른 글
[express] postgreSQL 연동 (0) | 2020.07.23 |
---|---|
[express] router (0) | 2020.07.19 |
Node 및 Express 설치 (0) | 2020.07.12 |
댓글