首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GraphQL.Net与c#一起使用时,如何访问GraphQL字段中的参数值?

将GraphQL.Net与c#一起使用时,如何访问GraphQL字段中的参数值?
EN

Stack Overflow用户
提问于 2020-10-02 00:49:09
回答 1查看 214关注 0票数 0

考虑下面的查询;

代码语言:javascript
复制
query {
  droid(id: "123") {
    id
    name
  }
}

在使用GraphQL.net时,我可以访问服务器上的id查询参数,如下所示;

代码语言:javascript
复制
public class Droid
{
  public string Id { get; set; }
  public string Name { get; set; }
}

public class DroidType : ObjectGraphType
{
  public DroidType()
  {
    Field<NonNullGraphType<IdGraphType>>("id");
    Field<StringGraphType>("name");
  }
}

public class StarWarsQuery : ObjectGraphType
{
  private List<Droid> _droids = new List<Droid>
  {
    new Droid { Id = "123", Name = "R2-D2" }
  };

  public StarWarsQuery()
  {
    Field<DroidType>(
      "droid",
      arguments: new QueryArguments(
        new QueryArgument<IdGraphType> { Name = "id" }
      ),
      resolve: context =>
      {
        var id = context.GetArgument<string>("id");//<---- THIS
        return _droids.FirstOrDefault(x => x.Id == id);
      }
    );
  }
}

但是我该如何处理这样的查询呢?

代码语言:javascript
复制
query {
  droid(id: "123") {
    id
    name
    owner(id: "456") {
      id
      name
    }
  }
}

这不是一个很好的例子,但我期望的是创建一个OwnerType并在我的DriodType中添加一个新字段;

代码语言:javascript
复制
public class DroidType : ObjectGraphType
{
  public DroidType()
  {
    Field<NonNullGraphType<IdGraphType>>("id");
    Field<StringGraphType>("name");
    Field<OwnerType>(
      "owner",
      arguments: new QueryArguments(
        new QueryArgument<IdGraphType> { Name = "id" }
      ),
      resolve: context =>
      {
        var id = context.GetArgument<string>("id");
        return _owners.FirstOrDefault(x => x.Id == id);
      }
    );
  }
}

这是我的问题,如果ID为123的driod已经归他们所有,我只想要ID为456的所有者。要做到这一点,我需要过滤所有者,只包括那些拥有droid123的所有者。为此,我需要能够从DroidType的owner字段中访问droid的id,即我希望从DroidType上的owner字段访问StarWarsQuery中的droid字段的参数值。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-10-03 19:22:04

owner字段的resolve参数中的上下文有一个"Source“属性,该属性保存了droid类型的信息。我从那里得到了我需要的信息。

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

https://stackoverflow.com/questions/64159896

复制
相关文章

相似问题

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