Prisma Connect

agnusdei·2023년 7월 5일
0
// 지역 테이블
model District {
  id        String    @id @default(uuid())
  name      String
  bjdongs   Bjdong[]
}

// 법정동 테이블
model Bjdong {
  id             String          @id @default(uuid())
  name           String
  code           String
  district       District?       @relation(fields: [districtId], references: [id])
  districtId     String?
}
async update(data: UpdateDistrictDTO, admin: AdminDTO): Promise<District> {
    const bjdongIds = data.bjdongs.map((bjdong) => bjdong.id); // id 객체 배열로 재생성
    
    const updated = await this.prismaService.district.update({
      data: {
        ...data,
        bjdongs: {
          connect: bjdongIds.map((id) => ({ id })), // bjdong 테이블에 id 와 동일한 값을 조회하여 연결
        },
      },
      where: { id: data.id },
    });
    return updated;
  }

해당 코드는 update 메서드로, UpdateDistrictDTOAdminDTO를 입력받아서 District를 업데이트하는 기능을 수행합니다. 코드를 상세하게 분석해보겠습니다:

  1. bjdongIds 변수 선언:

    • data.bjdongs 배열에서 각 요소의 id 값을 추출하여 bjdongIds 배열에 저장합니다.
  2. updated 변수 선언:

    • prismaService.district.update() 메서드를 호출하여 District 업데이트를 수행합니다.
    • data 객체와 adminId 값을 병합하고, bjdongs 필드에 연결(connect)할 bjdong들의 정보를 설정합니다.
      • bjdongIds.map((id) => ({ id }))를 통해 bjdongIds 배열의 각 id 값을 가지는 객체 배열을 생성합니다. 이 객체 배열은 bjdongs 필드의 connect 옵션에 사용됩니다.
    • where 절을 사용하여 업데이트할 District의 고유 식별자를 지정합니다.
  3. updated 변수 반환:

    • 업데이트된 District 객체를 반환합니다.

이 코드는 주어진 UpdateDistrictDTOAdminDTO를 사용하여 District를 업데이트하고, 해당 업데이트된 District를 반환하는 기능을 구현하고 있습니다. bjdongs 필드에 대한 연결(connect) 작업은 bjdongIds 배열의 각 id 값을 활용하여 수행됩니다.

connect 옵션은 Prisma의 연결 기능 중 하나로, 관계형 데이터베이스에서 관계를 설정할 때 사용됩니다. bjdongs 필드가 District 모델과 Bjdong 모델 간의 관계를 나타내는 필드라고 가정하겠습니다.

bjdongIds.map((id) => ({ id }))bjdongIds 배열의 각 요소에 대해 객체를 생성하는 과정입니다. 각 id 값을 가지는 객체를 생성하여 배열로 반환합니다.

예를 들어, bjdongIds 배열이 [1, 2, 3]인 경우, bjdongIds.map((id) => ({ id }))는 다음과 같은 배열을 생성합니다:

[
  { id: 1 },
  { id: 2 },
  { id: 3 }
]

이 배열은 Prisma의 connect 옵션에 사용되며, bjdongs 필드의 연결 작업에 활용됩니다. 각 객체는 id 필드를 가지며, 해당 id 값과 일치하는 Bjdong 데이터를 Districtbjdongs 필드와 연결(connect)합니다. 즉, bjdongs 필드에는 id가 1, 2, 3인 Bjdong 데이터가 연결됩니다.

이를 통해 bjdongs 필드에 여러 Bjdong 데이터를 연결할 수 있으며, bjdongIds 배열의 각 id 값을 가진 객체 배열을 생성하여 connect 옵션에 전달함으로써 이 연결 작업을 수행할 수 있습니다.

0개의 댓글