Как создать категории с подкатегориями nestjs, prisma, postgresql?
что я сделал и как, по порядку: category-dto:
export class CreateCategoryDto {
@IsString({message:'Название категрии нужно указать обязательно'})
name: string
@IsString()
seo: string
@IsString()
description: string
@IsInt({each: true})
parentId?: number[]
}
схема таблицы категорий:
model Category {
id Int @id @default(autoincrement())
name String @unique
seo String @unique
parentId Int? @default(0)
description String
jobOffers CategoryOnOfferts[]
parent Category? @relation("SubCategory", fields: [parentId], references: [id])
children Category[] @relation("SubCategory")
@@index([parentId], map: "categories_parentId_IDX")
@@map("categories")
}
category.sarvice:
async create(createCategoryDto: CreateCategoryDto) {
const nestedCategories = createCategoryDto.parentId?.map((id) => ({
id
})) || []
try {
return await this.prisma.category.create({
data: {
name: createCategoryDto.name,
seo: createCategoryDto.seo,
description: createCategoryDto.description,
children: {
connectOrCreate: [
{
where: {id: 1},
create: createCategoryDto
}
]
}
},
include: {
children: true
}
})
} catch (err) {
if (
err instanceof Prisma.PrismaClientKnownRequestError &&
err.code === PrismaError.ConnectedRecordsNotFound
) {
console.log(err)
throw new ConflictException('Некоторые из предоставленых ИД категорий не верны')
}
}
}
проблема в ошибке при создании категории
Foreign key constraint failed on the field: categories_parentId_fkey (index)