Ошибка: Аполлон уже создан - PullRequest
0 голосов
/ 09 мая 2018

Я довольно новичок в GraphQL.

Что я хотел бы сделать, это вызывать сервер GraphQL при каждом onBlur событии в текстовом вводе.

Проблема:

  • Вызов успешно сделан только один раз.
  • При втором вызове я получаю эту ошибку:

ERROR Error: Apollo has been already created.

Это может быть что-то довольно очевидное, но я не могу найти решение.

Есть ли способ успешно выполнить новый вызов graphql для каждого onBlur события, выполненного подряд?

onBlurZIP(zip) {
    const zipQuery = gql`
      query {
        getAddressByPostalCode(postalCode: "${zip}") {
            country
            city
            street
            streettype
            state
            stateInitials
            quarter
        }
      }
    `;

    const httpLink = createHttpLink({
      uri: environment.endpoint
    });

    const link = setContext((_, { headers }) => {
      return {
        headers: {
          // headers object...
        }
      }
    });

    this._apollo.create({
      link: link.concat(httpLink),
      cache: new InMemoryCache()
    });

    this.querySubscription = this._apollo.watchQuery<any>({
      query: zipQuery,
      variables: { zip },
      fetchPolicy: 'network-only'
    })
    .valueChanges
    .subscribe(
      res => {
        // do stuff...
      },

      err => console.log(err)
    );
  }

HTML:

<input formControlName="zip" (blur)="onBlurZIP($event.target.value)" type="text" class="form-control" name="zip" id="zip" required>

1 Ответ

0 голосов
/ 10 мая 2018

Экземпляр клиента Apollo должен быть одноэлементным.Вам нужно определить его один раз в приложении и передать его компонентам, используя <ApolloProvider>.Вы можете обратиться к документам реагировать-apollo для того же самого: https://www.apollographql.com/docs/react/essentials/get-started.html.

Ваш код выдает ошибку, потому что вы создаете экземпляр клиента apollo для каждого события onBlur.

Редактировать:

Соответствующий документ для инициализации клиента apollo в angular.js: https://www.apollographql.com/docs/angular/basics/setup.html

...