如何使用Prisma.js为帖子分配一些标签?
我已经有一些标签,我想为帖子分配一些标签?我不想创建新标签。
架构.棱镜:
model Post {
Id String @id @default(uuid())
AuthorId String
Author User @relation(fields: [AuthorId], references: [Id])
CategoryId String?
Category Category? @relation(fields: [CategoryId], references: [Id])
Title String @db.VarChar(255)
Description String? @db.MediumText
Summary String? @db.VarChar(255)
Tags TagPostMapping[]
}
model TagPostMapping {
Id String @id @default(uuid())
Post Post? @relation(fields: [PostId], references: [Id])
PostId String?
Tag Tag? @relation(fields: [TagId], references: [Id])
TagId String?
CreatedDate DateTime @default(now())
ModifiedDate DateTime? @updatedAt
}
model Tag {
Id String @id @default(uuid())
Title String @unique
Posts TagPostMapping[]
CreatedDate DateTime @default(now())
ModifiedDate DateTime? @updatedAt
}
在Prisma网站上,有一个例子,但它适合于创建一些标签,并分配给他们的职位。而我想添加一些现有的标签的文章。
https://www.prisma.io/docs/support/help-articles/working-with-many-to-many-relations#explicit-relations
3条答案
按热度按时间cld4siwp1#
我有一个类似的情况和下面的代码为我工作:
PS:由于
Post
和Tag
是多对多的关系,您也可以更新prisma.post.update
。n53p2ov02#
我已经通过使用connectOrCreate和prisma v4解决了这个问题。有了它,你可以连接/分配数据库中已经存在的标签,而不用创建一个新的标签。使用connectOrCreate的好处是。如果数据库中不存在标签,它可以创建一个新的标签。代码可以与你的prisma模式一起工作。
更新查询棱镜:
参考:
zkure5ic3#
我使用了
$transaction
,在此事务中,我创建了2个插入命令,还定义了一个ID,用于使用uuid packag.postId = v4()
.v4()
进行发布。uuid
中的一个函数,用于生成唯一的Id
。