1. knex.js란?

knex.js는 Node.js SQL builder 및 query 기능을 제공하는 라이브러리다. PostgreSQL, MSSQL, MySQL, MariaDB, SQLite3, Oracle, Amazon Redshift 등을 지원해준다. knex.js의 공식 사이트는 knexjs.org/ 이다.

 

2. 장점

직접 사용했을 때 장점은 기존 SQL문을 사용할 줄 안다면 거의 비슷하게 사용할 수 있다. 우리가 흔히 SQL문에서 아는 select, where, from, join 등등 다양한 query들이 포함되어 있다. 또한 지원해주는 기능도 많아서 나름 편리하다. transaction, async/await, migration 등등 을 지원해주며 사용하기 편하다. 또한 JavaScript와 SQL 코딩을 같이하는 느낌? 뭔가 데이터 베이스를 만지는거 같으면서도 일반적인 코딩하는 기분이 든다. 즉, 기존 프로그래머들이 적응하는데 오래걸리지 않는다.

 

3. 단점

공식 홈페이지에서 함수에 대한 설명이 조금 빈약하다. 어떤 코드를 실행했을 때 어떤 형식으로 리턴이 되는지, 어떻게 사용되는지를 조금 더 자세하게 작성해주면 좋겠다는 생각을 많이 받았다. 예를 들면 knex("table_name").select(*) 코드를 작성했을 때 "table_name"이라는 테이블에서 모든 field를 받아오는 정도는 SQL를 다뤄본 사람이라면 모두 알고 있다. 하지만 이때 return되는 값이 어떤 형태로 오는지를 설명되어있지 않았다. 실제로 나 같은경우에는 return되는 형식을 몰라서 조금 시간을 잡은 적도 있다.

*knex("table_name").select(*) 의 return은 [{row1_field1: "row1의 field1의 값"}, {row2_field2: "row2의 값"}]이다.

 

4. 설치 방법

Node.js의 패키지이다보니 npm install 명령어를 통해서 설치할 수 있다.

$ npm install knex --save

이후 configuration을 해야하는데 이것은 knexjs.org/#Installation 에서 정확하게 확인하길 바란다.

 

5. 글쓴이는 왜 사용하게 되었나?

2020년 4학년 캡스톤 디자인에서 웹페이지를 개발할 때 PostgreSQL를 사용해서 데이터베이스를 구축했다. 이때 knex를 사용하게 되었는데 1학기에는 BackEnd를 만질 줄 아는 사람이 1명밖에 없었고 새로 배우기에는 시간이 너무 없어서 만질줄 아는 1명말고 나머지 4명은 FrontEnd기능만 맡아서 했다. 때문에, knex를 다뤄볼 일이 없었는데, 2학기에 캡스톤디자인2에서는 refactoring를 BackEnd 중심으로 진행하게 되었다. 다들 처음만질 때는 익숙하지 않다보니 막막했는데 계속 만지다보니 나름 재미도 느낀다. 하지만 BackEnd 설계 성격상 하나의 기능을 추가하거나 기존의 코드에서 바꾸려고하니 머리가 너무 아프다...

 

6. 결론

knex 카테고리에는 내가 knex를 다루면서 찾기 힘들었던 부분, 헤맸던 부분 등등 을 정리하기 위해서 만든 카테고리다. 그래도 해당 카테고리의 글을 작성하기전에 knex가 어떤 것인지는 설명하는 글이 있어야할거 같은 느낌이 들어서 작성해본다.

+ Recent posts