如何在GraphQL中添加List

时间:2017-07-21 04:56:22

标签: graphql graphql-js graphql-java

我是graphQL的新手。我的Ghapgh Ql查询需要以下格式{"offers": false, "new": true, "favourites": true},其中offer,new,favorite是java类中的Filters。查询可以包含任意数量的此类过滤器。如何编写graphql查询,它将接受过滤器列表并构建如上所述的查询。我尝试通过写上面的编码查询。

1 个答案:

答案 0 :(得分:0)

This question与您的类似,因为它讨论了使用GraphQL进行过滤的概念。第一个答案还有一个评论,它引出了一些讨论其过滤方法的GraphCool文档。 (GraphCool Docs)。我对Java前端并不是很了解,所以希望这仍然有用。

但一般情况下,您可以在查询中包含可选参数,如果存在,则会在您的解析中过滤结果。

决定将args作为第二个参数。根据您希望提供的潜在过滤器数量,您可以选择正确的实施方案。

有两个选项,1)有一个param 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,那么您的决定就是。如果是这样,那么您将希望在自己的对象中阻止过滤器,以便更容易将您的问题分开。