【问题标题】:How to add List in GraphQL如何在 GraphQL 中添加列表
【发布时间】:2017-12-27 00:13:44
【问题描述】:

我是 graphQL 的新手。我的 Ghapgh Ql 查询需要以下格式 {"offers": false, "new": true, "favourites": true} 其中提供、新的、收藏夹是 java 类中的过滤器。查询可以有任意数量的此类过滤器。如何编写 graphql 查询,该查询将接受过滤器列表并像上面一样构建查询。我试过写上面的 hadcoded 查询。

【问题讨论】:

    标签: graphql graphql-js graphql-java


    【解决方案1】:

    This question 与您的类似,因为它讨论了使用 GraphQL 进行过滤的概念。还有一个关于第一个答案的评论导致一些 GraphCool 文档讨论他们的过滤方法。 (GraphCool Docs)。我在 Java 方面不是很了解,所以希望这仍然有帮助。

    一般来说,您可以在查询中包含可选参数,如果存在,则在您的解析中过滤您的结果。

    Resolves 将 args 作为第二个参数。根据您想提供多少潜在过滤器,您可以选择正确的实现。

    两个选项是,1) 有一个参数filter,它接受一个过滤器列表。 (这类似于 GraphCool;2)只需使用变量名作为 args 并过滤这些东西。

    因此,对于您的示例,我不确定您的模型到底是什么样子或您使用的是什么类型的 DB/ORM,但是如果您使用选项 2,您基本上可以在您的解决方案中过滤结果( JS 对不起,我不是 java 专家)。

    resolve: (_, args, context) => {
        const result = someDbInteractionForResult()
        result.filter( (item) => {
            for (const [filter, value] of Object.entries(args)) {
                 const passFilter = value === item.filter;
                 if (!passFilter) {
                     return false;
                 }
            }
            return true;
        }
    }
    

    这仍然是类似于以 GraphCool 方式传入过滤器的方法。我认为决定只是如果您还有其他args,您也将包括在内。如果是这样,那么您将希望在其自己的对象中屏蔽您的过滤器,以便更轻松地分离您的关注点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2020-09-22
      • 2018-10-03
      • 2021-08-31
      • 1970-01-01
      • 2019-04-10
      • 2022-01-10
      相关资源
      最近更新 更多