如何解决如何在 Apollo GraphQL 中发出 foreach 请求?
我有一个 javascript 博客,我正在使用 Apollo GraphQL 来保存我的数据。我打算列出所有类别的六个帖子。像这样:
[
technology: [
post1,post2,...
],cook: [
post1,...
]
但是我做不到。我想获取所有类别的 id 并提出一个很大的请求,如下所示:
{
firstCategory: allPosts(where: {category: "firstId"},first: 6) {
...fields
}
secondCategory: allPosts(where: {category: "secondId"},first: 6) {
...fields
}
}
但是如果我添加一个新类别,我必须更改我的代码。
解决方法
您可以将类别[先前查询]作为变量传递,例如:
query posts($firstCat: String,$secondCat: String,$limit: Int) {
firstCategory: allPosts(where: {category: $firstCat},first: $limit) {
...fields
}
secondCategory: allPosts(where: {category: $secondCat},first: $limit) {
...fields
}
}
变量:
{
"firstCat": "technology","secondCat": "cook","limit": 6
}
当然,它仍然仅限于 n 个准备好的别名。
构建动态别名是可能的,但不建议 - source ... AST 工具应该被用作粘合字符串(直接或使用文字)被认为是滥用 GraphQL。
您还可以解构这个组件,多个 <Category name="technology" />
组件具有自己的内部查询(使用 props.name
作为类别过滤变量)。这将发出单独的请求。
出于速度和 SEO 的目的,您可以使用 gatsby(单独请求的数量无关紧要......在一定程度上) - 但是(作为所有静态生成器)它需要在更改时重建/重新部署。
好的 API 应该让您查询标签和每个标签内的相关帖子(按任何标准排序;......以及[和他的帖子] 内的作者......等等 - 这是一个标准GraphQL 功能)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。