Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
Tags
- 아이오닉 스크롤 이벤트
- mysql if
- scroll
- TAILWIND
- 셀렉트박스 커스텀
- modal
- flex-1
- 호버
- 앵귤러 애니메이션
- 옵저버블
- Angular Router
- 앵귤러 모달
- formgroup
- Oracle LISTAGG 사용 예시
- 스크롤 이벤트 감지
- 스크롤 이벤트
- egov spring ajax 사용 예시
- angular route
- prisma
- 모달
- Ionic modal
- 검색
- angular animation
- angular button
- ApexChart
- angular modal
- Router
- ajax 사용 예시
- summary
- route
Archives
- Today
- Total
깜놀하는 해므찌로
Prisma foreign key 배열 조회하여 등록하기 예시 / prisma connect 본문
반응형
SMALL
// 지역 테이블
model District {
id String @id @default(uuid())
region Region
name String
bjdongs Bjdong[]
createdAt DateTime @default(now())
deletedAt DateTime?
admin Admin @relation(fields: [adminId], references: [id])
adminId String
}
// 법정동 테이블
model Bjdong {
id String @id @default(uuid())
name String
code String
sigungu Sigungu @relation(fields: [sigunguId], references: [id])
sigunguId String
sido Sido @relation(fields: [sidoId], references: [id])
sidoId String
district District? @relation(fields: [districtId], references: [id])
districtId String?
}
1. 총 두 개의 테이블이 존재합니다.
export interface ICreateDistrictDTO {
region: Region;
name: string;
bjdongs: IBjdongDTO[];
}
2. 지역 테이블에 입력하는 DTO 입니다.
3. 자세히 보시면 객체 타입 배열을 넣는 것을 볼 수 있습니다.
4. primsa 에 입력 시 이러한 타입을 어떻게 등록하는 지 예시를 보도록 합니다.
async create(data: CreateDistrictDTO, admin: AdminDTO): Promise<District> {
const created = await this.prismaService.district.create({
data: {
name: data.name,
region: data.region,
adminId: admin.id,
bjdongs: {
connect: { id: data.bjdongs[0].id },
},
},
});
return created;
}
5. 위 예시는 지역 테이블에 입력하는 서비스의 create 메소드입니다.
6. 위 예처럼 connect: 를 활용하여 법정동 코드를 조회하여 동일한 id 를 가진 데이터를 배열로 넣을 수 있습니다.
하지만! 0번째만 넣을 수 밖에 없습니다.
따라서 코드를 수정해보겠습니다.
async create(data: CreateDistrictDTO, admin: AdminDTO): Promise<District> {
const bjdongIds = data.bjdongs.map(bjdong => bjdong.id); // id만 추출하여 배열로 만들어 변수에 할당
const created = await this.prismaService.district.create({
data: {
name: data.name,
region: data.region,
adminId: admin.id,
bjdongs: {
connect: bjdongIds.map(id => ({id})) // map 활용
},
},
});
return created;
}
7. id만 따로 추출해서 배열로 만든 후 변수에 할당합니다.
8. map 을 활용하여 연결된 모든 법정동 테이블의 행을 넣습니다.
끝! 타입스크립트 참 좋네요..!
반응형
LIST
'IT' 카테고리의 다른 글
Angular routerLinkActive menu handle / 앵귤러 라우터 메뉴 핸들 예시 (0) | 2023.08.20 |
---|---|
Apexchart toggle custom 아펙스차트 토글 커스텀 예시 (0) | 2023.08.19 |
Ionic Anular nestjs video Upload example / 앵귤러 nestjs 동영상 파일 업로드 예시 feat.AWS S3 (0) | 2023.08.17 |
nestjs search 검색 controller service 기본 구조 예시 feat.Prisma (0) | 2023.08.16 |
Angular 컴포넌트 cli 생성 시 앞에 이름 / prefix 수정하기 (0) | 2023.08.15 |