首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何首先组织GraphQL .Net GraphType中的多个突变?

如何首先组织GraphQL .Net GraphType中的多个突变?
EN

Stack Overflow用户
提问于 2020-11-07 16:08:57
回答 1查看 486关注 0票数 3

在GraphQL .Net中,大多数示例代码都有一个顶层突变图对象,其中定义了许多实际的突变。

下面是GraphQL .NET 突变页的一个示例

代码语言:javascript
运行
复制
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中的多个突变?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 16:57:42

https://graphql-dotnet.github.io/docs/getting-started/query-organization

通过添加顶级字段,可以将查询或突变“分组”。“诀窍”是在解析器中返回一个空对象。

代码语言:javascript
运行
复制
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);
      });
  }
}

该组织反映在如何调用突变(或查询)。如果您只是想让它们在外部显示为一个平面列表(这相当于一个巨大的文件),那么您也可以使用部分类将其分解成任意数量的文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64729712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档