Свойство «подписка» не существует для типа «Обещание <GraphQLResult>|Заметный <object> - PullRequest
0 голосов
/ 04 октября 2018

В приложении Ionic мы интегрируем AWS-Amplify и можем вставлять и извлекать данные.Но при реализации подписки мы получаем сообщение об ошибке компилятора:

Свойство «подписка» не существует для типа «Обещание |Наблюдаемое.Свойство «подписка» не существует для типа «Обещание».

В Subscription.ts

export const onCreateEmployee = `subscription OnCreateEmployee(
  $employee_id: Int
  $employee_name: String
) {
  onCreateEmployee(
    employee_id: $employee_id
    employee_name: $employee_name
  ) {
    employee_id
    employee_name
  }
}

В Main.ts

const subscription = API.graphql(
      graphqlOperation(onCreateEmployee)
    ).subscribe((eventData) => { console.log(eventData)
    });

В основном.ts, он показывает ошибку как не может подписаться ..... (см. выше ошибку).

Кто-нибудь может знать, как решить эту проблему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Это обходной путь, но вы можете конвертировать Observable в Promise

let graphqlCallPromise: Promise<any>;

if(graphqlCall instanceOf Observable) graphqlCallPromise = API.graphql(graphqlOperation(onCreateEmployee)).toPromise();

graphqlCallPromise.then((eventData) => { console.log(eventData) });
0 голосов
/ 04 октября 2018

вероятно graphql возвращает обещание вместо наблюдаемого.Используйте then для кэширования результата.

API.graphql(
  graphqlOperation(onCreateEmployee)
).then((eventData) => { console.log(eventData)
});
...