нет информации о том, как смонтировать тип объединения graphql в подписках. возможно ли это?
type Subscription {
joinRequest(id: UUID!): MemberUnion!
}
type User { ... }
type Guest { ... }
union MemberUnion = User | Guest
и он отлично работает с моими запросами или изменениями, просто нужна любая информация о том, как реализовать с моей подпиской. joinRequest
ключ - это userId
и role
. role
должно означать преобразователь, где информация user
или guest
должна быть получена с помощью переданного аргумента userId
.
ошибка, которую я вижу после попытки запуска кода, как сейчас:
"Абстрактный тип" MemberUnion "должен преобразовываться в тип объекта во время выполнения для поля" Subscription.joinRequest "со значением {userId:" 3bdb0eb5-f237-40a7-beb c -6263cc18dba5 ", имя:" trolololo3 ", полезная нагрузка: {...}}, получено" null ". Либо тип" MemberUnion "должен предоставлять функцию" resolveType ", либо каждый возможный тип должен предоставлять функцию" isTypeOf "."
мои файлы преобразователей, которые экспортируют запросы, мутации и подписки:
import ....
export default {
Query: {
...User,
...Listing,
...Products
},
Mutation: {
...ListingMutations,
...ProductsMutations
},
Subscription: {
...ProductsSubscription,
...ListingSubscription
},
Products: {
items: ({ id: itemId }) => method({ itemId })
},
MemberUnion: {
// eslint-disable-next-line no-underscore-dangle
__resolveType: obj => {
if (obj.role === USER_ROLE.GUEST) {
return 'Guest';
}
if (obj.role === USER_ROLE.USER) {
return 'User';
}
return null;
}
},
....
и, как я уже говорил, это отлично работает, когда я использую MemberUnion
для любого запроса или ответа на изменение, где я хочу выбрать объект пользователя, который может быть пользователем или гостем.