GraphQL 查询使用嵌套对象字段进行过滤

发布于 2025-01-16 19:54:07 字数 518 浏览 1 评论 0原文

我刚刚开始学习.net core中的graphql和HotChocolate.Data。 我使用属性 [UseFiltering] 如何使用嵌套对象字段来过滤表中的行并过滤嵌套对象?

query GetData(
  $search: String
) {
  documents(
    where: {
       name: { contains: $search }
    }
  ) {
    total: totalCount
    items {
      id
      name
      requirements(
        where: {
          name: { contains: $search }
        }
      ) 
      {
        id
        name
      }
    }
  }
}

按文档过滤工作正常,但如果我尝试按要求连接过滤,则会出现错误 生成期间出错:字段“Document.requirements”上的未知参数“where”。

I just started to learn graphql and HotChocolate.Data in .net core.
I usind attribute [UseFiltering]
How do I use nested objects` fields to filter rows from a table and also filter the nested objects as well?

query GetData(
  $search: String
) {
  documents(
    where: {
       name: { contains: $search }
    }
  ) {
    total: totalCount
    items {
      id
      name
      requirements(
        where: {
          name: { contains: $search }
        }
      ) 
      {
        id
        name
      }
    }
  }
}

Filtering by documents works fine, but if I try to connect the filtering by requirements I get errors
Error during generation: Unknown argument "where" on field "Document.requirements".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

御守 2025-01-23 19:54:07

为此,您需要告诉 HotChocolate 您要在该字段上进行过滤。 正如克里斯在评论中所说,您可以使用使用 [UseFiltering] 注释来执行此操作

或者,您可以使用代码优先方法:

Item 类型中,您应该将 UseFiltering() 添加到 Requirements 字段:

protected override void Configure(IObjectTypeDescriptor<Item> descriptor)
{
    descriptor
        .Field(x => x.Requirements)
        .UseFiltering(); // This is the relevant line to add
}

In order to do this you need to tell HotChocolate that you want to filter on that field. As Chris says in his comment, you can use annotation to do this with [UseFiltering]

Alternatively, you can use a code-first approach:

In your Item type, you should add UseFiltering() to the Requirements field:

protected override void Configure(IObjectTypeDescriptor<Item> descriptor)
{
    descriptor
        .Field(x => x.Requirements)
        .UseFiltering(); // This is the relevant line to add
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文