向 graphql-ruby 实现添加多个过滤器

Posted

技术标签:

【中文标题】向 graphql-ruby 实现添加多个过滤器【英文标题】:Adding multiple filters to graphql-ruby implementation 【发布时间】:2022-01-17 19:36:34 【问题描述】:

我想为我的 GraphQL 类型添加过滤和排序功能(使用 graphql-ruby gem)。 我一直在寻找现有的解决方案,我发现唯一合理的选择是创建自定义解析器。 这种方法的问题是我“失去”了 Active Record 功能,例如在模型上使用自定义方法进行过滤或字段解析。 有没有人为此找到一个体面的(和现有的)解决方案?

值得一提的是graphiti,它提供了这些开箱即用的功能,但偏离了 GraphQL 规范并改用 JSON:API。这很棒,但我想从 GraphQL 订阅和内置授权中受益。

【问题讨论】:

【参考方案1】:

对于排序和过滤的通用解决方案以及 GraphQL 标准存在一些问题。很难为一组可以轻松适用于不同类型的参数定义具体模式。因为你可能自然会有sort: Enum[name_asc, name_desc, country_asc, country_desc] 之类的东西。

如果您对这个限制感到满意,并且愿意将您的参数作为某种概括的sort: String 接收并编写代码以确保发送的内容是有效值。然后您可以为此使用Connection (https://graphql-ruby.org/pagination/using_connections)。

【讨论】:

以上是关于向 graphql-ruby 实现添加多个过滤器的主要内容,如果未能解决你的问题,请参考以下文章

向 s-s-rS 中的多个参数添加独立过滤器搜索的问题

如何在 Vue 组件的数据上添加多个过滤器?

无法理解使用带有 graphql-ruby gem 的 ActionCable 的 GraphQL 订阅

如何在 grafana 中通过标签添加过滤器?

EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000200 向图像添加过滤器时

在 servlet 过滤器中向请求添加 HTTP 标头