Apollo Angular watchQuery 不返回任何结果或错误

Posted

技术标签:

【中文标题】Apollo Angular watchQuery 不返回任何结果或错误【英文标题】:Apollo Angular watchQuery returns no results or errors 【发布时间】:2020-01-25 23:20:00 【问题描述】:

我决定将由ng add apollo-angular 创建的GraphQLModule 封装到我们自己的Angular 共享模块中。

https://www.apollographql.com/docs/angular/basics/setup/#installation-with-angular-schematics

在此模块内执行查询时,我收到来自服务器的响应。

但是,当在另一个应用程序中使用此模块时,我们没有收到任何响应或错误:

  myQuery = gql`
    
      member 
        id
        details 
          id
        
      
    
  `

  queryOptions: WatchQueryOptions = query: this.myQuery, errorPolicy: 'all'
  myQueryObs: Observable<any>

  constructor(private apollo: Apollo) 

  ngOnInit() 
    this.myQueryObs = this.apollo.watchQuery<Query>(this.queryOptions)
    .valueChanges.pipe(map (results => 
      if (results.errors) 
        console.log('ERRORS!!! YAY!!!') // NEVER GET HERE
      
      console.log('RESULTS') // NEVER GET HERE EITHER
    ));
  

我已经记录了它的废话,无法确定它为什么根本没有响应。它的行为就像 Apollo 根本没有实例化,但控制台输出证明并非如此。

非常感谢任何建议或帮助!

【问题讨论】:

【参考方案1】:

好的,答案很简单。上面的示例返回一个observable,这就是没有结果的原因。我仍然需要subscribe 到那个observable 才能得到结果。因此,要获得结果,最好:

   this.apollo
      .watchQuery(this.queryOptions)
      .valueChanges.subscribe((result: any) => 
        console.log('++++++++ RESULTS +++++++++', result)
      );

【讨论】:

以上是关于Apollo Angular watchQuery 不返回任何结果或错误的主要内容,如果未能解决你的问题,请参考以下文章

Angular Apollo GraphQL watchQuery 与订阅

apollo.watchQuery 堆栈/重复 = 性能问题?

Apollo Angular watchQuery 不返回任何结果或错误

Apollo Angular 客户端总是使用缓存

如何在 Angular 5 中使用 GET 方法使用 apollo graphql 查询

将 Apollo 客户端用于 GraphQl 时如何在 watchQuery 中使用 loading 属性