如何在 GraphQL 中使用变异方法在模型中创建关系?
Posted
技术标签:
【中文标题】如何在 GraphQL 中使用变异方法在模型中创建关系?【英文标题】:How to create a relations in models with mutation method in GraphQL? 【发布时间】:2020-11-21 23:45:09 【问题描述】:我正在使用 GraphQL 创建一个电子商务 API。我的棱镜架构是
model Product
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
name String
price Int
stocks Int
model User
id Int @id @default(autoincrement())
name String
email String @unique
password String
Orders Order[]
model Order
id Int @id @default(autoincrement())
product Product @relation(fields: [productId], references: [id])
productId Int
user User @relation(fields: [userId], references: [id])
userId Int
@@unique([productId, userId])
为了在用户订购产品时创建关系,我的 graphql 架构和解析器函数应该是什么?
【问题讨论】:
【参考方案1】:您的架构实际上应该如下所示:
model Product
id Int @id @default(autoincrement())
name String
price Int
stocks Int
orders Order[]
createdAt DateTime @default(now())
model User
id Int @id @default(autoincrement())
name String
email String @unique
password String
orders Order[]
model Order
id Int @id @default(autoincrement())
product Product @relation(fields: [productId], references: [id])
productId Int
user User @relation(fields: [userId], references: [id])
userId Int
@@unique([productId, userId])
您的 GraphQL 突变应该包含作为变量传递的用户 ID 和产品 ID,您的解析器应该如下所示:
await prisma.user.update(
where:
id: 1,
,
data:
orders:
create:
product:
connect:
id: 123,
,
,
,
,
,
)
这将为用户 ID 1 创建一个新订单,并将产品 ID 123 添加到订单中。
【讨论】:
以上是关于如何在 GraphQL 中使用变异方法在模型中创建关系?的主要内容,如果未能解决你的问题,请参考以下文章
变异时如何修复“猫鼬模型的名称”不是graphql中的构造函数
如何使用 schema.graphql 在放大数据存储中创建多对多关系