如何在GraphQL中使用可选参数实现突变?
我正在学习graphql,并阅读了教程,对updateLink变体的实现很感兴趣,如下所示如何在GraphQL中使用可选参数实现突变?,graphql,graphql-js,prisma-graphql,Graphql,Graphql Js,Prisma Graphql,我正在学习graphql,并阅读了教程,对updateLink变体的实现很感兴趣,如下所示 type Query { # Fetch a single link by its `id` link(id: ID!): Link } type Mutation { # Update a link updateLink(id: ID!, url: String, description: String): Link } 我问这个问题的原因是,我所看到的每一个其他变异实现都只使用非可
type Query {
# Fetch a single link by its `id`
link(id: ID!): Link
}
type Mutation {
# Update a link
updateLink(id: ID!, url: String, description: String): Link
}
我问这个问题的原因是,我所看到的每一个其他变异实现都只使用非可选参数。我很好奇是否有一个社区一致同意的模式,用于从给定上下文中提取和应用提供的非空参数(url、描述),并将它们应用于相关的数据库记录
我已经考虑过如下检查每个变量是否为null,但是与Graphql提供的其他“魔力”和简单性相比,这种方法看起来比我预期的要混乱得多
updateLink(root, args, context) {
if (args.url == null && args.description == null){
return null
} else if (args.url == null) {
return context.prisma.updateLink({
id: args.id,
description: args.description
})
} else {
return context.prisma.updateLink({
id: args.id,
url: args.url
})
}
}
请让我知道你是否找到了一个更干净的方法来提取和应用可选参数(url,描述)
我的另一个考虑是做两个单独的更新突变,如下所示
type Query {
# Fetch a single link by its `id`
link(id: ID!): Link
}
type Mutation {
# Update a link
updateLinkURL(id: ID!, url: String!): Link
updateLinkDescription(id: ID!, description: String!): Link
}
这里的想法是使用有限的参数和声明性的突变名称,可以强制参数为非空。这里的主要问题是,对于具有许多列的表,可以有许多更新方法,这也会开始看起来很混乱
仅供参考,我使用prisma作为我的ORM