gpt4 book ai didi

graphql - 在 GraphQL .NET 中,如何指定查询可以采用可选参数?

转载 作者:行者123 更新时间:2023-12-04 04:24:46 24 4
gpt4 key购买 nike

假设我希望能够通过指定用户的 ID 或通过指定其他标识符(如电子邮件地址)来查询用户。

你如何构造根 Query 对象来接受它?

鉴于这种

public class MyQuery : ObjectGraphType
{
public MyQuery(IUserService userService)
{
Name = "Query";

Field<UserType>(
"user",
arguments: new QueryArguments(
new QueryArgument<IntGraphType>() { Name = "id" },
new QueryArgument<StringGraphType>() { Name = "email" }
),
resolve: context =>
{
int? id = context.GetArgument<int>("id");
if (id != null)
{
return userService.GetUserById(id);
}
string email = context.GetArgument<string>("email");
if (email != null)
{
return userService.GetUserByEmail(email);
}
return null;
}
);
}
}

这是正确的方法吗?威尔 context.GetArgument()返回 null如果在查询中找不到参数?或者为 QueryArguments 提供两个参数意味着查询需要两个参数?

最佳答案

arguments: new QueryArguments(
new QueryArgument<IntGraphType>() { Name = "id" },
new QueryArgument<StringGraphType>() { Name = "email" }
)

这意味着这些参数可以为空,这将使它们成为可选的。
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<IntGraphType>>() { Name = "id" },
new QueryArgument<NonNullGraphType<StringGraphType>>() { Name = "email" }
)

包装 GraphTypeNonNullGraphType指定该值应为非空值,因此需要提供非空值。

默认 GetArgument<TType>将返回 default(TType)如果参数不存在。您还可以使用:
context.GetArgument<string>("email", defaultValue: "my default value");

关于graphql - 在 GraphQL .NET 中,如何指定查询可以采用可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com