如何在GraphQL中添加列表

如何在GraphQL中添加列表,graphql,graphql-js,graphql-java,Graphql,Graphql Js,Graphql Java,我是graphQL新手。我的Ghapgh Ql查询需要以下格式{“offers”:false,“new”:true,“favorites”:true}其中offers、new、favorites是java类中的过滤器。查询可以有任意数量的此类筛选器。如何编写graphql查询,它将接受过滤器列表并构建如上所述的查询。我尝试编写上面的hadcoded查询。与您的类似,它讨论了使用GraphQL进行过滤的概念。还有对第一个答案的评论,它导致了一些GraphTool文档,讨论了它们的过滤方法。().

我是graphQL新手。我的Ghapgh Ql查询需要以下格式
{“offers”:false,“new”:true,“favorites”:true}
其中offers、new、favorites是java类中的过滤器。查询可以有任意数量的此类筛选器。如何编写graphql查询,它将接受过滤器列表并构建如上所述的查询。我尝试编写上面的hadcoded查询。

与您的类似,它讨论了使用GraphQL进行过滤的概念。还有对第一个答案的评论,它导致了一些GraphTool文档,讨论了它们的过滤方法。(). 我在Java方面的知识不是很渊博,所以希望这仍然有帮助

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

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

有两个选项,1)有一个参数
过滤器
,它接受过滤器列表。(这类似于GraphTool;2)只需使用变量名作为参数,并对这些内容进行筛选

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

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

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;
    }
}