Почему Apollo mutate никогда не завершается?

#angular #typescript #graphql #apollo

#angular #typescript #graphql #apollo

Вопрос:

Я застрял с apollo mutation с 2 дней.

Когда я вызываю мутацию в сгенерированном angular apollo коде и подписываюсь, подписка никогда не завершается. Я хочу получить результат с сервера, но ничего не возвращается.

Я не знаю, почему он никогда не завершается. Когда я вызываю напрямую сервер graphql с post-запросом, используя Postman, я получаю ожидаемый результат.

  constructor(
    private createAccount: CreateAccountGQL,) {
  }

ngOnInit() {
 this.createAccount.mutate({
      data: {
        uid: 'sdfsdfsdfs',
        username: 'yxydfsdsdsdfsfsfsd',
      },
    }).subscribe(result => {
       // THIS CODE NEVER EXECUTE
       console.log(result)
  });
}
  

Вот сгенерированный код

 @Injectable({
  providedIn: "root"
})
export class CreateAccountGQL extends Apollo.Mutation<
  CreateAccountMutation,
  CreateAccountVariables
> {
  document: any = gql`
    mutation createAccount($data: AccountCreateInput!) {
      createAccount(data: $data) {
        id
        username
        uid
      }
    }
  `;
}
  

Я хотел бы получить некоторый результат в моем обратном вызове subscribe complete.
Пожалуйста, любая помощь
Спасибо

Комментарии:

1. Какие-либо ошибки в консоли? или вы видите какой-либо ответ на вкладке network инструментов разработчика? Если вы поделитесь этим, будет полезно проверить.

2. Можете ли вы проверить вкладку «Сеть» в консоли браузера и посмотреть, успешно ли выполняется запрос?

3. Привет. На вкладке сеть нет ошибки, и запрос успешно выполнен с ожидаемым ответом.

Ответ №1:

Я решил свою проблему. Проблема заключалась в том, что GraphQlModule не был импортирован в мой модуль.

Этот код работает.

 this.apollo.mutate({
      mutation: gql`mutation createAccount($data: AccountCreateInput!) {
        createAccount(data: $data) {
          id
          username
          uid
        }
      }
    `,
    variables: {
      "data":{
        "uid": "DKpWcH6q2wRCTeUTigrQasdadsVcFfqaS2",
        "username": "ydfsdfsfd@mail.com"
      }
    },
    }).subscribe(result => console.log(result))
  

Этот код не работает. Может быть, мне нужно импортировать другой модуль.

 
this.createAccount.mutate({
      data: {
        uid: 'DKpWcH6q2wRCTeUTigrQasdadsVcFfqaS2',
        username: 'ydfsdfsfd@mail.com',
      },
    }).subscribe(result => {
      console.log(result);
    });

  

Спасибо