Prisma - CreateMany, Find 불편한점

최제원·2022년 12월 30일
0

Prisma

목록 보기
1/3
post-thumbnail

그룹프로젝트에 Prisma ORM을 사용하다보니 불편한 점이 좀 있어서 까먹기 전에 포스팅

코드 / 로직 설명


멘티들이 자신의 프로젝트를 등록하는 경우에 category를 사용하는 경우에
category를 생성하는 부분이다 먼저 create 로직을 구현하고
프로젝트 게시물을 생성하는 경우에 connection을 할 예정이다

  1. body값의 name은 prisma findMany - in 을 사용하기 위해 Array로 재배치
  2. 만약 find한 값의 길이와 response의 길이가 맞다면 그대로 return
    2.1 길이가 일치하다는 뜻은 이미 모두 존재하는 해시태그이다
  3. 모두 존재하는 category가 아니라면 crate
    3.2 DB에 존재하는 category는 제외해야 한다
    3.3 for문을 돌면서 response와 isExsitsCategory 네임이 겹치면 splice
  4. 3번에서 솎아 낸 데이터를 create해준다
  5. 4번 return

불편했던점


  1. findMany가 아닌 겹치는 데이터를 조회해서 제외 후 생성하는 점이 없어
    배열 순회가 잦다 조금 더 좋은 코드가 있을 것 같지만 찾지는 못 했다
    upsert 또한 Many를 사용할 방법이 없기 때문에 채택하지 못 했다
    덕분에 2, 3번 코드가 추가로 사용해야 했고 코드가 깔끔하진 못 한거 같다..

  2. 4번 로직 또한 조금 이상한데 원래는 createMany를 사용해주려고 했다
    근데 return 값을 확인한후에 사용할수 없다는 것을 알았다.. createMany의 return 값은 해당 데이터들의 Array object가 아닌 count이다
    데이터는 생성하지만 그 값들을 리턴을 해주진 않고
    단순히 데이터들의 개수를 리턴해준다(도대체 무슨 의도인지 잘 모르겠다)
    따라서 $transaction으로 response를 순회하며 값을 조회해 트랜잭션을 한번에 날려 그 값을 리턴받는 방식으로 해결했다
    그렇지 않으면 find 쿼리를 중복으로 날려야 되기 때문이다
    이 문제는 github에서도 해결해달라고 말하고 있지만 수정은 안 된것 같다
    (https://github.com/prisma/prisma/issues/8131)

profile
Why & How

0개의 댓글