gpt4 book ai didi

graphql - 如何在 GraphQL .Net GraphType First 中组织多个突变?

转载 作者:行者123 更新时间:2023-12-04 15:13:43 28 4
gpt4 key购买 nike

在 GraphQL .Net 中,大多数示例代码都有一个顶级突变图对象,其中定义了许多实际的突变。
这是来自 GraphQL .NET 的示例 mutations page :

public class StarWarsSchema : Schema
{
public StarWarsSchema(IServiceProvider provider)
: base(provider)
{
Query = provider.Resolve<StarWarsQuery>();
Mutation = provider.Resolve<StarWarsMutation>();
}
}


public class StarWarsMutation : ObjectGraphType
{
public StarWarsMutation(StarWarsData data)
{
Field<HumanType>(
"createHuman",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<HumanInputType>> {Name = "human"}
),
resolve: context =>
{
var human = context.GetArgument<Human>("human");
return data.AddHuman(human);
});
}
}
当你有 1-5 个突变时,这似乎很好,但是在一些更大的项目中加类可能会导致数十个突变。把他们放在一个大类里似乎就足够了,尽管似乎也缺乏一些组织。我尝试将子突变 GraphTypeObject 放入父突变的字段中,但在调用子突变时遇到了一些麻烦。也许我配置错了。
这只是让我想知道,当然必须有一个拥有十多个突变的用户,他们可能已经组织了他们的突变,而不仅仅是将他们的所有突变放在一个单一的顶级突变对象中。
如何在 GraphQL .Net GraphType First 中组织多个突变?

最佳答案

https://graphql-dotnet.github.io/docs/getting-started/query-organization
您可以通过添加顶级字段将查询或突变“分组”在一起。 “技巧”是在解析器中返回一个空对象。

public class StarWarsSchema : Schema
{
public StarWarsSchema(IServiceProvider provider)
: base(provider)
{
Query = provider.Resolve<StarWarsQuery>();
Mutation = provider.Resolve<StarWarsMutation>();
}
}

public class StarWarsMutation : ObjectGraphType
{
public StarWarsMutation(StarWarsData data)
{
Field<CharacterMutation>(
"characters",
resolve: context => new { });
}
}

public class CharacterMutation : ObjectGraphType
{
public CharacterMutation(StarWarsData data)
{
Field<HumanType>(
"createHuman",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<HumanInputType>> {Name = "human"}
),
resolve: context =>
{
var human = context.GetArgument<Human>("human");
return data.AddHuman(human);
});
}
}
这种组织反射(reflect)在如何调用突变(或查询)上。如果您只是希望它们在外部显示为一个平面列表(相当于一个巨大的文件),您还可以使用部分类将其分解为任意数量的文件。

关于graphql - 如何在 GraphQL .Net GraphType First 中组织多个突变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64729712/

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