Как справиться с ошибкой мутации на клиенте Apollo? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь решить, как дескриптор выбросил ошибку мутации сервера apollo на стороне клиента apollo.

Это моя упрощенная реализация мутации (createCustomer):

  Mutation: {
    createCustomer: async (_, { photoFile, customer }) => {
      const rootPath = path.resolve("./public");
      const customerPath = path.join(rootPath, "/photos/customers");
      try {
        const {
          dataValues: { customerID, firstname, lastname, email, phone }
        } = await models.Customer.create(customer);
        const customerUniqueDir = path.join(customerPath, 
         `${customerID}`);
       } catch (createCustomerError) {
       // throw new apollo-server error
        throw new UserInputError();
      }
    }
}

на стороне клиента я получаю следующую ошибку: (первая не красная ошибка - это просто console.log в блоке catch на клиенте)

Эта ошибка выдается по ссылке apollo:

enter image description here

вот ответ от сервера:

enter image description here

Вот реализация apollo-клиента:

import { ApolloClient } from "apollo-client";
import { ApolloLink } from "apollo-link";
import { ErrorLink } from "apollo-link-error";
import { withClientState } from "apollo-link-state";
import { createUploadLink } from "apollo-upload-client";
import { ApolloProvider } from "react-apollo";
import { InMemoryCache } from "apollo-cache-inmemory";
import App from "./App";


const cache = new InMemoryCache({
  addTypename: false
});

const stateLink = withClientState({
  cache,
  resolvers: {
    Mutation: {}
  },
  defaults: {
    customers: { customers: [], count: 0 }
  }
});
const uploadLink = createUploadLink({ uri: "http://localhost:8000/graphql" });
const errorLink = new ErrorLink();

const client = new ApolloClient({
  link: ApolloLink.from([stateLink, errorLink, uploadLink]),
  cache,
  connectToDevTools: true
});

ReactDOM.render(
  <BrowserRouter>
    <ApolloProvider client={client}>
        <App />
    </ApolloProvider>
  </BrowserRouter>,
  document.getElementById("root")
);

Есть ли решение, как я могу обработать ошибку мутации на клиенте?

Спасибо за ответ

1 Ответ

0 голосов
/ 19 ноября 2018

Решение:

Ошибка появилась в apollo-link. Поэтому я посмотрел на мою реализацию GraphQl-клиента и понял, что забыл использовать модуль Apollo-Link-HTTP.

Итак, я добавил следующие строки кода:

import { HttpLink } from "apollo-link-http";

const httpLink = new HttpLink({ uri: "http://localhost:8000/graphql" });

const client = new ApolloClient({
  link: ApolloLink.from([stateLink,errorLink, httpLink, uploadLink]),
  cache,
  connectToDevTools: true
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...