Я использую apollo-datasource-rest
с apollo-server-lambda
и пытаюсь выяснить, как сопоставить запрос с определенным преобразователем.У меня есть следующая схема, в которой запрос plan
должен возвращать список пользователей (который должен управляться запросом users
, а не запросом user
).
type Query {
user(user_id: String, username: String): User
users(user_ids: [String!]): [User!]
plan(plan_id: String): Plan
}
type User {
id: String
username: String
first: String
last: String
image: String
}
type Plan {
title: String
image: String
attending: [User]
}
Источник данных plan
распознавателя запросов выглядит следующим образом:
planReducer(data) {
return {
image: data.public.info.image,
title: data.public.info.title,
attending: Object.keys(data.public.attending)
}
}
data.public.attending
в planReducer
возвращает массив user_id
s, который я бы хотел затем передать в мой users
запрос в отличие от моего user
запроса.
Это мои текущие преобразователи:
user: (_, { username }, { dataSources }) =>
dataSources.userData.getUserByUsername({ username: username }),
users: async (_, { user_ids }, { dataSources }) => {
const usersArray = await dataSources.userData.getUsersByIds({ userIds: user_ids })
return usersArray
},
plan: async (_, { plan_id }, { dataSources }) => {
return dataSources.planData.getPlanById({ planId: plan_id })
}