我是graphQL的新手。我的 Ghapgh Ql 查询需要以下格式{"offers": false, "new": true, "favourites": true}
,其中提供、新的、收藏夹是 java 类中的过滤器。查询可以有任意数量的此类过滤器。如何编写 graphql 查询,该查询将接受过滤器列表并像上面一样构建查询。我尝试通过编写上面的 hadcoded 查询。
问问题
236 次
1 回答
0
这个问题与您的问题相似,因为它讨论了使用 GraphQL 进行过滤的概念。还有一个关于第一个答案的评论导致一些 GraphCool 文档讨论他们的过滤方法。(GraphCool 文档)。我在 Java 方面不是很了解,所以希望这仍然有帮助。
不过,一般来说,您可以在查询中包含可选参数,如果存在,则在您的解析中过滤您的结果。
解析将 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
的,你也将包括在内。如果是这样,那么您将希望在其自己的对象中阻止您的过滤器,以便更轻松地分离您的关注点。
于 2017-07-21T14:23:40.280 回答