【发布时间】:2026-01-03 02:45:02
【问题描述】:
正如在 Prisma 的 document 中一样,set 可用于覆盖关系的值。
const user = await prisma.user.update({
where: { email: 'alice@prisma.io' },
data: {
posts: {
set: [{ id: 32 }, { id: 42 }],
},
},
})
但是当我尝试使用明确的多对多关系时,它不起作用。
model Product {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
description String?
price Decimal
sku String @unique
published Boolean @default(false)
tags ProductTag[]
}
model Tag {
id Int @id @default(autoincrement())
name String
products ProductTag[]
}
model ProductTag {
productId String
tagId Int
createdAt DateTime @default(now())
product Product @relation(fields: [productId], references: [id])
tag Tag @relation(fields: [tagId], references: [id])
@@id([productId, tagId])
}
我的代码要更新Product
update(id: string, updateProductDto: UpdateProductDto) {
const tags = updateProductDto.tags.map((tag) => ({
productId_tagId: {
productId: id,
tagId: tag.id,
},
}));
console.log(JSON.stringify(tags));
return this.prisma.product.update({
where: { id: id },
data: {
...updateProductDto,
tags: {
set: [...tags],
},
},
});
}
我想用产品信息更新产品标签。
我怎样才能正确地实现它?
【问题讨论】:
-
请提供错误消息,以及来自 node_modules/.prisma/client/index.d.ts 的 ProductTagWhereUniqueInput
标签: typescript orm prisma prisma2