作者:猪可夫司机 | 来源:互联网 | 2022-12-13 11:53
假设我希望能够通过指定用户ID 或指定其他标识符(例如电子邮件地址)来查询用户。
您如何构造根Query对象以接受它?
鉴于这种
public class MyQuery : ObjectGraphType
{
public MyQuery(IUserService userService)
{
Name = "Query";
Field(
"user",
arguments: new QueryArguments(
new QueryArgument() { Name = "id" },
new QueryArgument() { Name = "email" }
),
resolve: cOntext=>
{
int? id = context.GetArgument("id");
if (id != null)
{
return userService.GetUserById(id);
}
string email = context.GetArgument("email");
if (email != null)
{
return userService.GetUserByEmail(email);
}
return null;
}
);
}
}
这是正确的方法吗?如果在查询中找不到参数,是否会context.GetArgument()
返回null
?还是提供两个参数来QueryArguments
表示查询需要两个参数?
1> Joe McBride..:
arguments: new QueryArguments(
new QueryArgument() { Name = "id" },
new QueryArgument() { Name = "email" }
)
这意味着这些参数是可为空的,这将使它们成为可选参数。
arguments: new QueryArguments(
new QueryArgument>() { Name = "id" },
new QueryArgument>() { Name = "email" }
)
包装GraphType
in NonNullGraphType
指定该值应为非空值,从而要求提供一个非空值。
如果参数不存在,默认情况下GetArgument
将返回default(TType)
。您还可以使用:
context.GetArgument("email", defaultValue: "my default value");