[英]GraphQL: Require at least one argument in a query
我为我的用户查询设置了以下架构:
{
type: UserType,
args: {
id: {
type: GraphQLID,
description: "A user's id.",
},
email: {
type: GraphQLString,
description: "A user's email.",
},
},
resolve: async (parent, args) => {
// ...
}
我想接受id
和email
作为参数,但至少需要一个。 有没有办法在模式中设置它,而不必在resolve函数中编写额外的代码?
或者更为明确的是为每个参数创建单独的查询? 例如: getUserById
, getUserByEmail
, getUserBySessionToken
等?
我认为使用resolve函数最简单的方法。 但为什么你认为它会变得混乱?
try {
if(!args.id && !args.email) {
throw new Error('Specify id or email');
}
...
} catch(e) {
return Promise.reject(e);
}
如果您希望一个模式强制执行两者中的一个,那么您可以添加一个枚举参数来限定单个字符串参数。 架构在graphql中可能如下所示:
type query {
getUser(
lookup: String!
lookupType: UserLookupType!
): User
}
enum UserLookupType {
ID
EMAIL
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.