如何设置 GraphQL 查询,以便需要一个或另一个参数,但不能同时需要两者

2023-11-23

我刚刚开始掌握 GraphQL,

我设置了以下查询: ​

type: UserType,
args: {
    id:    { name: 'id',    type: new GraphQLNonNull(GraphQLID)     },
    email: { name: 'email', type: new GraphQLNonNull(GraphQLString) }
},
resolve: (root, { id, email }, { db: { User } }, fieldASTs) => {
    ...
}

我希望能够将“id”或“电子邮件”传递给查询,但是,通过此设置,它需要传递 id 和电子邮件。

有没有一种方法可以设置查询,以便只需要一个参数,id 或 email,但不能同时使用两者?


GraphQL 中没有内置方法可以做到这一点。您需要使您的参数可为空(通过删除GraphQLNonNull来自它们的包装器类型)然后,在解析器中,您可以执行如下检查:

resolve: (root, { id, email }, { db: { User } }, fieldASTs) => {
  if (!id && !email) return Promise.reject(new Error('Must pass in either an id or email'))
  if (id && email) return Promise.reject(new Error('Must pass in either an id or email, but not both.'))
  // the rest of your resolver
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 GraphQL 查询,以便需要一个或另一个参数,但不能同时需要两者 的相关文章

随机推荐