#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);
});
Спасибо