代码之家  ›  专栏  ›  技术社区  ›  Andrew

子项上的Graphql筛选器[重复]

  •  0
  • Andrew  · 技术社区  · 7 年前

    我试图理解Graph QL,并提供了一个基本的示例。e、 g.如果我通过此查询,我将返回与id匹配的结果。

    query {
      person(id:"4090D8F6-EFC4-42CD-B55C-E2203537380C")
      {
        firstname
        surname
      }
    }
    

    我的数据只是一组静态的测试数据,我现在要做的是返回所有名与我提供的匹配的用户。我很困惑我该如何写这篇文章,因为id空检查似乎阻止了我!?

    我的PersonQuery如下所示:

    public class PersonQuery : ObjectGraphType<Person>
    {
    
        public PersonQuery(ShoppingData data)
        {
            Field<PersonType>(
                "person",
                description: "A Person",
                arguments: new QueryArguments(
                    new QueryArgument<NonNullGraphType<IdGraphType>>
                    {
                        Name = "id",
                        Description = "The id of the person"
                    }),
                resolve: ctx =>
                {
                    return data.GetById(ctx.GetArgument<Guid>("id"));
                });
    
        }
    }
    

    我该怎么做才能按名字返回一个人员列表,我不知道下面的查询是否有效,但我想知道如何与工作id示例一起执行此操作。

    query {
      person
      {
        firstname: ("Andrew")
        surname
      }
    }
    

    答案更新-由DavidG提供

    我按照前面提到的那样做了,所以我的PersonQuery现在看起来像这样

    public class PersonQuery : ObjectGraphType<Person>
        {
    
            public PersonQuery(ShoppingData data)
            {
                Field<PersonType>(
                    name: "person",
                    description: "A Person",
                    arguments: new QueryArguments(
                        new QueryArgument<IdGraphType>
                        {
                            Name = "id",
                            Description = "The id of the person"
                        }),
                    resolve: ctx =>
                    {
                         return data.GetById(ctx.GetArgument<Guid>("id"));
                    });
    
                Field<ListGraphType<PersonType>>(
                    name : "persons",
                    description: "Persons",
                    arguments: new QueryArguments(
                        new QueryArgument<StringGraphType>
                        {
                            Name = "firstname",
                            Description = "The firstname of the person"
                        },
                        new QueryArgument<StringGraphType>
                        {
                            Name = "surname",
                            Description = "The surname of the person"
                        }),
                    resolve: ctx =>
                    {
                        var firstName = ctx.GetArgument<String>("firstname");
                        var surname = ctx.GetArgument<String>("surname");
                        return data.Filter(firstName, surname);
                    });
    
            }
        }
    

    然后,我可以按如下方式运行graphql查询:

    query {
      persons(firstname: "Andrew", surname: "P")
      {
        firstname
        surname
      }
    }
    
    0 回复  |  直到 7 年前
    推荐文章