반응형
증상
nodejs의 sequilize로 ORM 설정하고 생성된 테이블에 데이터를 넣은 뒤 findall로 데이터를 조회하려고 해도 아무것도 조회가 안된다.
원인
sequlize는 기본적으로 설정한 테이블 이름에 s를 붙여서 쿼리를 생성한다.
(정말 라이브러리 제작자 오지랖이 너무너무 넓어서 생긴 이슈다. 니들만쓰냐?)
sequlize 관련 함수 실행시 테이블 정보에 s가 붙는지 확인해보자.
또한 조회부터 하지 말고 삽입부터 해보고 생성된 테이블에 s가 붙었는지 확인해보자.
해결방법
sequlize ORM 정의할때 위와 같이 freezeTableName:true 옵션값에 true를 주도록 하자.
그러면 원하는 테이블 이름과 정확히 일치하는 쿼리가 생성된다.
추가사항
만약 본인이 이 문제로 들어왔다면 추가로 아래 문제도 발생할 가능성이 높으니까 이것까지 보고가라
자꾸 테이블에 id 필드가 자동으로 생성됩니다.
ORM 생성시 특정 필드에 아래 옵션값을 넣어주면 pk역할을 하는 id 필드가 안생긴다.
primaryKey: true로 해결
아래 링크 참고
https://stackoverflow.com/questions/29233896/sequelize-table-without-column-id
자꾸 테이블에 `createdAt`, `updatedAt` 컬럼이 알아서 생성됩니다.
ORM에 정의시 아래 옵션 넣어주기
timestamps: false 로 해결
https://newbedev.com/sequelize-unknown-column-createdat-in-field-list
진짜 역대급 오지랖이다.
왜 본인들의 스타일을 강요해서 무조건 에러를 만들어 버리는걸까...?
반응형
'JS > Nodejs' 카테고리의 다른 글
카카오톡 알림톡 API - nodejs (0) | 2021.09.09 |
---|---|
Nodejs axios 요청 무응답 (0) | 2021.08.13 |
nodejs fileSystem rmdir TypeError [ERR_INVALID_CALLBACK]: Callback must be a function (0) | 2021.06.14 |
nodejs axios writestream 파일 다운로드 (0) | 2021.05.10 |
nodejs axios readstream 파일 업로드 (0) | 2021.05.10 |