Как обрабатывать ошибку с помощью клиента apollo в angular для graphql? - PullRequest
0 голосов
/ 04 августа 2020

Ниже мой код. Я пытался как-то связать переменную ошибки с модулем GraphQL. Пожалуйста, предоставьте способ добиться этого.

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. Как я могу это сделать? Заранее спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Ссылки Apollo являются составными единицами. Каждая ссылка - это функция, которая принимает операцию в качестве аргумента и возвращает наблюдаемое. Ссылки Apollo будут работать так же, как промежуточное программное обеспечение, которое может преобразовывать запрос и его результат.

Вы можете объединить ссылку на ошибку с основным модулем как

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