티스토리 뷰

 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)

그냥 지나가는 흔한 백엔드개발자423 느낌 입니다
우분투 데스크탑 개발 환경을 선호합니다
최근에는 vscode에 vim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 꽤나 오래 쳤었습니다