取决于另一个查询结果的Nuxt Apollo SSR查询

问题描述 投票:0回答:1

SO中类似的问题不是特定于SSR(服务器端渲染)的,它们的答案不适用于我的情况。

我正在使用基于@nuxtjs/apollovue-cli-plugin-apollovue-apollo

我有两个查询XYY的变量取自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.
      }
    },
  }
}

基本上我想要:

  • 在服务器上执行查询X并获得结果。
  • 使用查询X的结果中的变量在服务器上执行查询Y。

非常感谢,

vue.js graphql apollo server-side-rendering nuxt
1个回答
0
投票

通常,当您有一个查询依赖于另一个查询的结果时,您可以利用skip选项来阻止请求第二个查询,直到第一个查询解决为止。但是,skipping the query means it won't be prefetched。我认为,您可以做的唯一方法就是利用asyncData而不是依靠智能查询-您必须直接在ApolloClient实例上调用query方法。您might可以只对第一个查询执行此操作,然后将结果数据用作第二个查询中的变量值,但是临时而言,我不知道是否在查询之前获取了asyncData预取。

此外,如果要查询自己的服务器,则可以考虑更新API。通常,您需要像这样链接两个查询的情况表明架构设计不佳。例如,我不必获取用户,获取其ID,然后通过ID获取用户的帖子-我应该能够在一个查询中获取整个数据图(用户及其帖子)。 >

© www.soinside.com 2019 - 2024. All rights reserved.