У меня есть следующая модель данных:
type Tvshow {
id: ID! @unique
title: String!
pricing: [Pricing]
startDate: DateTime!
endDate: DateTime!
subscribers: [Tvshowsubscription!]
.....
}
type FavoriteTvshow {
id: ID! @unique
tvshow: Tvshow!
user: User!
}
type User {
id: ID! @unique
name: String
email: String! @unique
password: String
googleID: String @unique
resetToken: String
resetTokenExpiry: String
permissions: [Permission]
address: Address
phone: String
favorites: [FavoriteTvshow!]
tvshowSubscriptions: [Tvshowsubscription!]
}
У меня есть свой собственный преобразователь Tvshow с использованием addFragmentToInfo:
resolver-query.js
const Query = {
...
favoriteTvshows: forwardTo('db'),
tvshow: (parent, args, ctx, info) => {
const fragment = `fragment EnsureComputedFields on Tvshow { pricing { minQuantity maxQuantity unitPrice} subscribers { id }}`
return ctx.db.query.tvshow({}, addFragmentToInfo(info, fragment))
},
....
};
tvshow-resolver.js
const Tvshow = {
countSubscribers: (parent) => {
return parent.subscribers.length;
},
}
Это пример, у меня есть больше вычисляемых полей для Tvshow
Я могу запроситьTvshows с countSubscribeers, он отлично работает, делая что-то вроде этого:
query SINGLE_TVSHOW_QUERY($id: ID!) {
tvshow(where: { id: $id }) {
id
title
pricing {
minQuantity
maxQuantity
unitPrice
}
startDate
endDate
countSubscribers
}
}
Но я хочу получить все любимые Tvshow от пользователя, возвращающего countSubscribeers, запрос для которого может быть примерно таким:
query FAVORITES_FROM_USER($userId: ID!) {
favoriteTvshows(where: { user: {id: $userId} }) {
tvshow {
id
title
startDate
endDate
countSubscribers
}
}
}
Проблема в том, что когда я запрашиваю это в tvshow-resolver.js, о котором я упоминал ранее, у родителя нет объекта подписчика