我是graphQL的新手。我的Ghapgh Ql查询需要以下格式{"offers": false, "new": true, "favourites": true}
,其中offer,new,favorite是java类中的Filters。查询可以包含任意数量的此类过滤器。如何编写graphql查询,它将接受过滤器列表并构建如上所述的查询。我尝试通过写上面的编码查询。
答案 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
,那么您的决定就是。如果是这样,那么您将希望在自己的对象中阻止过滤器,以便更容易将您的问题分开。