발단
sequelize로 db로직을 구현하고 있었는데 테스트를 하니 이런 에러가 발생했다.
Cannot delete property 'meta' of [object Array]
조회하는데 왜 갑자기 delete?
어려운 문제는 아닌 것 같아서 구글링했더니 다음과 같은 것들을 알게 되었다.
Sequelize는 결과 데이터를 가공하기 위해 meta라는 속성을 사용하고 있다.
그러나 오류 메시지에서는 이 속성을 삭제하려 했지만, 배열 형태의 객체에 대해서는 삭제가 불가능하다는 에러가 발생하고 있다.
해결방법
sequelize.query의 결과가 배열이 아닌 객체 형태로 반환되도록 수정하거나,
결과 데이터에 직접 접근하여 meta 속성을 삭제하지 않도록 해야 한다.
함수에서 sequelize.query의 옵션을 변경하여 결과를 배열이 아닌 객체로 받아오도록 수정해보자.
간단하다. const data = await sequelize.query(query, { type: QueryTypes.SELECT });
sequelize의 type옵션에서 { type: QueryTypes.SELECT } 이렇게 넣어주면 해결된다.
728x90
'개발 > DB' 카테고리의 다른 글
[prisma] Transaction API error (0) | 2023.12.06 |
---|---|
[prisma] 정의하지 않은 필드에서 생기는 오류.. 가 아니였다 ㅎㅎㅎ (0) | 2023.11.04 |
[mysql] view의 장단점, 성능에 대한 고찰 (0) | 2023.10.17 |
[SQL] 입사하자마자 발견한 여러 문제들.. 특히 SQL 인젝션 문제 (0) | 2023.10.14 |
[sequelize] 서비스 - 모델 로직 분리, 리팩토링 과정 (0) | 2023.10.13 |