Я раздумываю над созданием GraphQL API с использованием MongoDB и пытаюсь разобраться в интерфейсах.
Я понял идею, стоящую за этим, и посмотрел кучу видео с докладами и практическими рекомендациями, но единственное, что я вижу, это то, как сделать распознаватель запросов.
Всегда отображается так: groups: () => { ... }
groups
будет указано в типе запроса, поэтому потребуется запрос mongodb.
Это преобразователь, для которого мне нужно найти ответ:
Что находится внутри {...}
?
Query: {
groups: () => { ... },
families: () => Family.find(),
members: () => Member.find(),
},
Я думаю, что область, в которой я застрял, когда дело доходит до запроса, заключается в следующем: каким будет запрос, поскольку groups
не является документом mongodb?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Вот полный typedef
export const typeDefs = gql`
interface Group {
id: ID!
name: String!
}
type Family implements Group {
id: ID!
name: String! # persons family name
numberOfPeople: Int
}
type Member implements Group {
id: ID!
name: String! # persons first name
age: Int!
}
type Query {
groups: [Group]
families: [Family]
members: [Member]
}
}
Вот резольвер
export const resolvers = {
Group: {
__resolveType(group, context, info){
if(group.family){
return 'Family';
}
if(group.member){
return 'Member';
}
return null;
},
},
Query: {
groups: () => { ... },
families: () => Family.find(),
members: () => Member.find(),
}
}
Идея состоит в том, что Family
и Member
— это отдельные документы, содержащие данные, а Group
— это интерфейс для создания запроса, который их объединяет.