如何使用 apollo 客户端在 graphql 的角度处理错误?

Posted

技术标签:

【中文标题】如何使用 apollo 客户端在 graphql 的角度处理错误?【英文标题】:How to handle error using apollo client in angular for graphql? 【发布时间】:2020-11-24 12:55:52 【问题描述】:

下面是我的代码。我一直试图以某种方式将错误变量链接到 GraphQL Module 。请提供一种方法来实现这一点。

import  ApolloModule, APOLLO_OPTIONS  from 'apollo-angular';
import  HttpLinkModule, HttpLink  from 'apollo-angular-link-http';
import  InMemoryCache  from 'apollo-cache-inmemory';
import  onError  from 'apollo-link-error';

const uri = 'http://localhost:3000/graphql'; 

const error = onError(( graphQLErrors, networkError ) =>  // need help on linking this with graphql module
  if (graphQLErrors)
    graphQLErrors.map(( message, locations, path ) =>
      console.log(
        `[GraphQL error]: Message: $message, Location: $locations, Path: $path`,
      ),
    );

  if (networkError) console.log(`[Network error]: $networkError`);
);

// <-- add the URL of the GraphQL server here
export function createApollo(httpLink: HttpLink) 
  return 
    link: httpLink.create( uri ),
    cache: new InMemoryCache(),
  ;


@NgModule(
  exports: [ApolloModule, HttpLinkModule],
  providers: [
    
      provide: APOLLO_OPTIONS,
      useFactory: createApollo,
      deps: [HttpLink],
    ,
  ],
)
export class GraphQLModule 

我需要有关与 GraphQL Module 链接错误的帮助。我怎样才能做到这一点?提前致谢。

【问题讨论】:

【参考方案1】:

Apollo 链接是可组合的单元。每个链接都是一个函数,它将操作作为参数并返回一个 observable。 Apollo 链接就像一个中间件一样可以转换请求及其结果。

您可以将错误链接组合到主模块为

export function createApollo(httpLink: HttpLink) 
  return 
    link: error.concat(httpLink.create( uri )),
    cache: new InMemoryCache(),
  ;

【讨论】:

以上是关于如何使用 apollo 客户端在 graphql 的角度处理错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在客户端 NextJS 中使用 Apollo GraphQL 订阅?

如何使用 apollo 客户端库创建带有角度参数的 graphql 查询

使用 Apollo Server 时如何生成 schema.graphql 文件?

如何在 GraphQL Apollo 客户端中处理异步突变

如何使用 apollo 客户端从 schema.graphql 中提取 typescript 接口:codegen

如何在 Apollo 中关闭 GraphQL 订阅的套接字连接