Как заставить подписку разрешить тип объединения?

#amazon-web-services #graphql #aws-appsync #aws-amplify

#amazon-web-services #graphql #aws-appsync #aws-amplify

Вопрос:

У меня есть мутация, которая возвращает тип объединения.

   union Task = PersonalTask | OtherTask
  mutation updateTask(...) : Task
  subscription onUpdatePersonalTask(id: ID): PersonalTask
    @aws_subscribe(mutations: ["updateTask"])
  

Но это выдает ошибку из-за несоответствия типов в mutation (return — это, Task который является объединением) и subscription (возвращает PersonalTask )

Вопросы

  1. Как заставить подписку преобразовать тип объединения мутаций в определенный тип?

  2. Есть ли более чистый способ для подписки разрешить автоматический тип?

Ответ №1:

Это может быть просто ограничением реализации директивы. Из документов:

Возвращаемый тип поля подписки в вашей схеме должен соответствовать возвращаемому типу соответствующего поля мутации.

Предполагая, что существует какое-то type поле, которое вы используете для различения PersonalTask и an OtherTask , одним из обходных путей было бы подписаться на все задачи, но использовать аргумент для сужения подписки:

подписка на обновление задачи (тип: Строка!): Задача @aws_subscribe(изменения: [«updateTask»])