Если вы хотите просто объединить свои запросы, вы можете добавить новый тип и новый запрос. Примерно так:
# Type definitions
type PersonalInfo {
individual: Individual
address: Address
contact: Contact
}
type Query {
personalInfo: PersonalInfo
# other queries
}
А затем добавьте преобразователи для этих трех полей:
const resolvers = {
PersonalInfo: {
individual (root , args) {
const individual_options = getOption(cfg.INDIVIDUAL_ENDPOINT);
return axios(individual_options).then(res => res.data);
} ,
address (root , args) {
const address_options = getOption(cfg.ADDRESS_ENDPOINT);
return axios(address_options).then(res => res.data);
} ,
contact (root , args) {
const contact_Options = getOption(cfg.CONTACT_ENDPOINT);
return axios(contact_Options).then(res => res.data);
},
},
Query: {
personalInfo: () => ({})
},
}
Мы возвращаем пустой объект для запроса, так как наши средства распознавания полей выполняют тяжелую работу, но нам все еще нужно вернуть объект, чтобы он действительно был запущен (в противном случае вы получите null
для запроса).
Если вы хотите передать что-либо резолверам (например, аргументы для поля запроса), вы можете сделать это через объект, который вы возвращаете, если хотите. Эти данные затем будут доступны в качестве первого параметра, передаваемого каждому из преобразователей полей («корневое» значение).
Примечание: если вы ищете способ выполнить запрос GraphQL без выбора подполей, это не будет возможно - вам всегда нужно запрашивать, какие именно поля вы хотите, когда запрашиваете поле, которое возвращает введите вместо скаляра.