티스토리 뷰

 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)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.