在单个解析器中一次创建两种类型的数据 (Graphql + Prisma)
Posted
技术标签:
【中文标题】在单个解析器中一次创建两种类型的数据 (Graphql + Prisma)【英文标题】:Creating two types of data at once in a single resolver (Graphql + Prisma) 【发布时间】:2020-10-18 05:53:54 【问题描述】:当用户创建 Post 类型的数据时,我还需要 graphql 服务器自动创建 Commit 类型的数据。 Commit 类型连接到 User 类型和 Post 类型。这是 User 类型、Post 类型和 Commit 类型的 graphql 模式:
type User
id: ID!
username: String!
commits: [Commit!]!
type Post
id: ID!
title: String!
content: String
commits: [Commit!]!
type Commit
id: ID!
user: User!
post: Post!
所以我做了一个 createPost 突变。 createPost 突变必须同时完成两项工作:创建 Post,然后创建 Commit。 Commit 数据应该连接到新创建的 Post 数据。以下是我到目前为止想出的解析器:
Mutation:
createPost: async (_, args) =>
const user, title, content = args;
await prisma.createPost(
title,
content
);
const postId = await prisma.post(title).id();
await prisma.createCommit(
user: connect: id: user.id,
post: connect: id: postId
);
const newPost = await prisma.post(id:postId);
return newPost;
这是一种有效的方法吗?或者有更好的方法吗?
【问题讨论】:
【参考方案1】:我认为这也可以:
Mutation:
createPost: async (_, args) =>
const user, title, content = args;
const post = await prisma.createPost(
title,
content
);
await prisma.createCommit(
user: connect: id: user.id,
post: connect: id: post.id
);
return post;
Prisma 返回创建的记录,因此您无需再次查询。
【讨论】:
以上是关于在单个解析器中一次创建两种类型的数据 (Graphql + Prisma)的主要内容,如果未能解决你的问题,请参考以下文章
Boost.Graph - 有 2 个简单的类和一个类 - 数据类型如何创建图表?
是否可以将多个管道组合到 Neuraxle 或 sklearn 中的单个估计器中以创建多输出分类器并一次性适应