최근에 프론트 개발을 하는 친구와 토이 프로젝트를 시작했다. 스프링으로 진행하려했지만 최근에 공부한 내용을 실습해보고자 하는 생각으로 express를 이용했다. 이번에는 간단한 내용이니 문제와 해결을 분리하지 않고 한번에 정리해보자. 😀
사실 에러라기보다 내가 원하는 결과 외에 추가적인 데이터가 나오는 문제다.
이 문제에 대한 해결책으로 하단의 코드처럼 간단하게 처리할 수 있지만 마음에 들지 않았다. 제 3자가 봤을 때 이해가 안되는 코드라고 생각했기 때문이다.
const result = await dataSource.query(
`SELECT id, content FROM TEST`
);
return result[0];
다른 해결방법이 없을까 고민하면서 열심히 구글링하다가 다행히 나와 같은 문제를 겪은 사람을 발견할 수 있었다.
알고보니 추가적으로 나오는 데이터는 ColumnDefinition이라는 것을 알 수 있었다. 즉, mysql2
를 이용하면 query()
함수는 rows, fields
를 반환한다는 것이다. (문서도 확인해보니 rows, fields
에 대한 설명이 나와있었다. 데헷 😛)
따라서 코드에 더 직관적으로 표현하기 위해서 다음과 같은 코드를 이용하여 프로젝트에 적용했다.
const [rows, fields] = await dataSource.query(
`SELECT id, content FROM TEST`
);
return rows;