SO中类似的问题不是特定于SSR(服务器端渲染)的,它们的答案不适用于我的情况。
我正在使用基于@nuxtjs/apollo和vue-cli-plugin-apollo的vue-apollo
我有两个查询X
和Y
。 Y
的变量取自X
的结果。我想在服务器端上执行两个查询。如何实现?
下面的简化示例是我能得到的最接近的例子。但是,查询Y
在客户端中执行。
{
apollo: {
X: {
query: X
},
Y: {
query: Y,
variables() {
return { id: this.X.someField };
},
skip() {
return !this.X; // Skip until X have some result.
}
},
}
}
基本上我想要:
非常感谢,
通常,当您有一个查询依赖于另一个查询的结果时,您可以利用skip
选项来阻止请求第二个查询,直到第一个查询解决为止。但是,skipping the query means it won't be prefetched。我认为,您可以做的唯一方法就是利用asyncData
而不是依靠智能查询-您必须直接在ApolloClient实例上调用query
方法。您might可以只对第一个查询执行此操作,然后将结果数据用作第二个查询中的变量值,但是临时而言,我不知道是否在查询之前获取了asyncData
预取。
此外,如果要查询自己的服务器,则可以考虑更新API。通常,您需要像这样链接两个查询的情况表明架构设计不佳。例如,我不必获取用户,获取其ID,然后通过ID获取用户的帖子-我应该能够在一个查询中获取整个数据图(用户及其帖子)。 >