prisma orm을 사용하면서 아래와 같은 에러가 발생했다.
{
"message": "\nInvalid `prisma.user.findUnique()` invocation in~~~
const user = await prisma.user.findUnique(\nError converting field \"createdAt\"
of expected non-nullable type
\"DateTime\", found incompatible value of \"null\".",
"statusCode": 422
}
user 데이터를 가져와야 하는데, user의 가입정보에 관한 것은 user테이블에 있지 않아서 createdAt이라는 필드는 없는데 에러내용을 살펴보면 c
reatedAt이라는 필드는 non-nullable type으로 DateTime을 기대하고 있다는데, 해당 값이 없어 불러올 수 없다는 에러로 보인다.
애초에 createdAt이라는 필드가 없으니 가져올 수 없는게 맞고, prisma 모델에도 해당 필드는 정의하지 않았다.
다행히 간단하게 해결했다.
해결 과정
기본적으로 prisma는 어플리케이션에 스키마를 업데이트해줘야 한다. 아마 prisma를 사용하는 모두가 이렇게 하면 해결되겠지 생각할 것이다.
npx prisma generate
그런데 애초에 모델에 createdAt을 설정한 적이 없어서 generate한다고 해서 설정값이 바뀌지는 않을 것이다. 기존에도 createdAt은 세팅되어있지 않을 것이기 때문이다.
역시나 동일한 오류가 발생한다. 일단 문제 자체는 createdAt을 설정한 적이 없는데도 불구하고 createdAt이 세팅되어 있어 뭔가 가져오는데서 문제가 생기고 있다. 아예 세팅한 적이 없는데 해당 필드를 인식한다는 것은 무언가 이상하다.
모델에는 createdAt이 설정되어있지 않다고 생각했고, 모델의 아래에 저렇게 relation 처럼 되어있는데, 생각해보니 mongoDB로 바꾸면서 관계설정은 전부 없는 상황이고, photo는 그 아래에 model이 아니라 type으로 정의되어 있었다. 혼자 작업하는게 아니다보니 스키마 관련해서 인지를 못하고 있었다.....
그리고 테스트로 만들어놓은 user에는 photo에 0번 배열에는 createdAt이 있지만 1번에는 없는 상태였다.
createdAt필드를 채워주니 해결되었다!!!!
'개발 > DB' 카테고리의 다른 글
[DB] RDBMS의 관점에서 바라본 RDBMS vs NoSQL 선택하기 (1) | 2023.12.10 |
---|---|
[prisma] Transaction API error (0) | 2023.12.06 |
[sequelize] Cannot delete property 'meta' of [object Array] (0) | 2023.10.29 |
[mysql] view의 장단점, 성능에 대한 고찰 (0) | 2023.10.17 |
[SQL] 입사하자마자 발견한 여러 문제들.. 특히 SQL 인젝션 문제 (0) | 2023.10.14 |