티스토리 뷰

반응형

 node.js (express.js)를 사용하던 중 기존에 있던 데이터베이스 Connect와 관련된 npm 모듈들이 모두 Database Driver 의존적이고, 어느정도 SQL문을 알고 있는 개발자에게 더 어렵게 느껴졌습니다. 그래서 Method Chaining을 사용하여 데이터베이스 쿼리문을 String 형태로 작성할 수 있는 간단한 모듈을 만들고 개인적으로 혼자 사용하고 있었습니다. 그런데 최근 프로젝트 중 이 모듈을 다시 사용하게 되었는데, npm으로 배포하면 좋겠다는 생각이 들어 조금 수정하여 npm으로 publish 했습니다. 패키지 이름은 node-qsb 이며 현재는 MySQL과 MariaDB SQL문만 지원합니다.

 node-qsb 모듈의 기본적인 철학은 '개발자가 알고 있는 SQL 문법에 대한 지식을 그대로 사용할 수 있도록' 입니다. 또한 mysql 패키지와 같은 드라이버 모듈을 포함하지 않습니다. 이는 드라이버 패키지의 의존성을 탈피함과 학습 비용을 높이지 않기 위함이며, 처음 목적인 Query String Builder의 목적에 부합하기 위함입니다. 개발자는 node-qsb로 데이터베이스 쿼리문만 생성하고, mysql 과 같은 패키지로 express나 node.js 개발 딴에서 직접 두가지 모두를 핸들링 할 수 있습니다. 물론 개인의 취향에 따라 이것이 더 불편하게 느껴질 수도 있습니다.

 select(), where() 등과 같은 메소드를 체이닝하여 스트링 형태의 데이터베이스 쿼리를 퍼즐 조각 맞추듯이 연결했다면 마지막에는 반드시 build()를 호출하여 생성된 qs 객체 내의 _qs 변수에 값을 할당 해 주어야합니다. build()를 실행하지 않으면 Query String이 완성되지 않습니다.

 이 패키지를 통해 다음과 같이 하드 코딩된 SQL문들을 좀 더 깔끔하게 관리할 수 있습니다.

 좀 더 복잡한 쿼리도 다음과 같이 사용하여 직관성을 나타낼 수 있습니다.

 이 외에도 JOIN, LIMIT, INSERT 구문 다중 VALUE 등의 기능을 지원하고 있습니다. 패키지의 README의 Example을 참고하시기 바랍니다. 또한 쿼리문의 안전성을 위해 백틱(`)과 이스케이프 기능('를 -> \' 로)이 포함되어 있습니다. 필요한 기능과 편의/보안 기능이 있다면 점점 더 보완해 나갈 예정입니다. 하지만 컨셉은 간단하게 사용할 수 있는 'Query String Builder'이기 때문에 MySQL Query Execute나 기타 의존성이 필요한 기능은 지양할 생각입니다.


반응형
프로필사진

Yowu (Yu Yongwoo)

흔한 Node.js/Java 백엔드 개발자입니다
Ubuntu와 MacOS 데스크탑 개발 환경을 선호합니다
최근에는 vscode와 IntelliJ를 사용하고 있습니다
vscode에는 neovim, IntelliJ는 ideaVim
개발용 키보드는 역시 HHKB Pro 2 무각입니다
락 밴드에서 드럼을 쳤습니다

댓글쓰기 폼
«   2021/10   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
글 보관함
Total
3,248,837
Today
639
Yesterday
500