본문 바로가기
프로그래밍/Node.js

[express] pg-promise

by 일상 속 둔치 2020. 7. 26.

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 다운로드 수를 보여준다.

 

https://www.npmtrends.com/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

댓글