node.js mysql 쿼리결과 컬럼명을 무조건 대문자로...

프론티어2019-03-24 19:33:24261310mysql, 컬럼, 대문자

node.js 에서 mysql 모듈을 사용해서 다음과 같은 query 를 실행한다고 가정해 보죠.

select user_id, user_name
   from SAMPLE_USER

실행결과 result 에는 대략 다음과 같습니다

[
  { user_id: 'user01', user_name: '이용자01' },
  { user_id: 'user02', user_name: '이용자02' },
  ...
]

이때 row 의 column 에 해당하는 user_id, user_name 은
SQL Query 에서 작성한 column (또는 column alias) 대소문자까지 그대로 설정됩니다.

작성된 Query 문과 관계없이 무조건 대문자(또는 소문자나 CamelCase) 로 결과를 받고 싶은 경우
어떻게 해야할까요?

Query 작성시 원하는 Case 로 작성.

이것은 직접 SQL 을 수정해야 하는 것으로,
최초의 전제와 관계없으므로 논외

Result 에서 직접 변경

result 수신시 row column 에 해당하는 key 값을 대문자로 모두 변경하는 것으로
공통 모듈등에 적용하면 가능한 방안이지만
데이터가 많아지면 변환처리가 좀 낭비로 느껴질 듯

node.js mysql module 직접 수정

검토하다가 node.js mysql module 을 직접 수정하기로 했습니다.

이 부분도 option 으로 제공되면 좋을 둣한데 따로 지원하지 않는 것 같아서
일단 소스상에서 정책(대문자?소문자?CamelCase) 에 따라 직접 수정하는 쪽으로 적용해 보았습니다.

수정할 소스는 mysql/lib/protocol/sequences/Query.js
수정한 내용은 아래와 같습니다. (FieldPacket 부분)

이미지