깜놀하는 해므찌로

Prisma Connect 설명 본문

IT

Prisma Connect 설명

agnusdei1207 2023. 6. 22. 15:35
반응형
SMALL
// 지역 테이블
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` 메서드로, `UpdateDistrictDTO`와 `AdminDTO`를 입력받아서 `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` 객체를 반환합니다.

이 코드는 주어진 `UpdateDistrictDTO`와 `AdminDTO`를 사용하여 `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` 데이터를 `District`의 `bjdongs` 필드와 연결(connect)합니다. 즉, `bjdongs` 필드에는 `id`가 1, 2, 3인 `Bjdong` 데이터가 연결됩니다.

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

 

반응형
LIST