Добавить unionType
Завершена
Проект: Городские и общественные бани
Планируемый запуск: | Дата начала: | 04.03.2021 | Планируемое завершение: | Дата завершения: |
Описание задачи
P.S. Получилось довольно изящное решение проблемы запроса разных топов ресурсов по любому УРЛу (когда не понятно какой именно тип объекта будет возвращен).
С таким подходом получается указать различные наборы полей для разных типов объектов: https://github.com/gorodskie-bani-ru/nextjs/blob/7977b664c1062c7a1934d25cbc2c199cc2982b38/src/gql/resource.graphql#L12-L26
Можно будет в дальнейшем использовать для оптимизации страницы ресурса и здесь https://github.com/freecode-academy/freecode.academy/blob/master/src/pages/Resource/index.tsx
P.P.S.
Здесь еще один момент вскрылся: если писать запрос так:
query resources(
$where: bani684_site_contentWhereInput
$orderBy: [bani684_site_contentOrderByInput!]
$take: Int
$skip: Int
) {
resources(where: $where, orderBy: $orderBy, take: $take, skip: $skip) {
...resource
}
}
fragment resource on ResourceUnion {
... on Resource {
id
pagetitle
uri
}
... on Company {
...CompanyFields
}
... on City {
...city
}
}
то есть с фрагментом в корне запроса, то аполло в ответе возвращает только __typename, то есть самого тела объекта нет. При этом с сервера данные приходят корректно.
Дело именно в кеш-манагере аполло. Официальная документация говорит прописать possibleTypes (можно и автоматически подгружать). Но в моем случае помогло и просто убрать фрагмент, то есть вот так запрос написать:
Проект | Задача | Статус | Дата постановки | Начало | Конец | Кто создал |
---|---|---|---|---|---|---|
Городские и общественные бани | Добавить unionType | Завершена | 04.03.2021 20:14:29 | 04.03.2021 20:45:06 | 04.03.2021 22:05:13 |