Vue Apollo 订阅未更新查询

Posted

技术标签:

【中文标题】Vue Apollo 订阅未更新查询【英文标题】:Vue Apollo subscription not updating the query 【发布时间】:2021-03-03 17:17:33 【问题描述】:

这是我第一次实现 GraphQL 订阅,如果这是一个明显的问题,请原谅。

我有一个使用Simple Subscription 方法的订阅,但不适用于SubscribeToMore 这是两个调用。

简单订阅:

    $subscribe: 
      onTransactionChanged: 
        query: ON_TRANSACTION_CHANGED,
        variables() 
          return 
            profileId: this.profile.profileId,
          ;
        ,
        skip() 
          return !this.profile?.profileId;
        ,
        result( data : any) 
          console.log(data.onTransactionChanged);
        ,
      ,
    ,

在这种情况下,我在控制台中看到了一个新事务。

订阅更多:

    cartProducts: 
      query: GET_CART_PRODUCTS,
      loadingKey: "loading",
      subscribeToMore: 
        document: ON_TRANSACTION_CHANGED,
      ,
      updateQuery: (previousResult: any,  subscriptionData : any) => 
        console.log("previousResult:", previousResult);
        console.log("subscriptionData:", subscriptionData);
      ,
      variables() 
        return 
          profileId: this.profile.profileId,
        ;
      ,
      skip() 
        return !this.profile?.profileId;
      ,
    

在这种情况下,控制台中没有任何内容。 我究竟做错了什么?提前谢谢你。

【问题讨论】:

没关系,我只是错过了花括号范围。它正在工作 【参考方案1】:

我只是错过了花括号范围。它正在工作

cartProducts: 
  query: GET_CART_PRODUCTS,
  loadingKey: "loading",
  subscribeToMore: 
        document: ON_TRANSACTION_CHANGED,
        updateQuery(previousResult: any,  subscriptionData : any) 
          console.log("previousResult:", previousResult);
        ,
        variables() 
          return 
            profileId: this.profile.profileId,
          ;
        ,
        skip() 
          return !this.profile?.profileId;
        ,
      

【讨论】:

以上是关于Vue Apollo 订阅未更新查询的主要内容,如果未能解决你的问题,请参考以下文章

订阅未定义的错误处理 - Apollo 和 Angular 2

Apollo React subscribeToMore 不更新数据

Apollo 订阅解析器永远不会激活?

Apollo - Angular 应用程序中子组件的多个 graphql 订阅

Vue Apollo:变量未添加到 graphql 查询,或者我在后端没有正确接受它们(Golang)

Apollo 客户端(反应) - 无法更新未安装组件的状态