У меня есть вопросы, основанные на https://www.apollographql.com/docs/graphql-tools/schema-stitching/
Допустим, у меня есть следующие схемы (обратите внимание, что это построено для примера, нет смысла структурировать его таким образом )
//First schema
type User {
id
cars: [Car]!
}
type Car {
id
name: String
model: String
}
//Second schema
type Color {
id
name: String
rgb: String
opacity: Int
}
//Defined in Apollo Server
extend type Car {
color: Color
}
И следующий преобразователь для
resolvers: {
Car: {
color: {
fragment: '... on Car { id }',
resolve(parent, args, context, info) {
return delegateToSchema({
schema: secondSchema,
operation: 'query',
fieldName: 'colorByUserAndCarId',
args: {
id: parent.id,
userId: ?
},
context,
info,
});
},
},
},
}
Как я могу получить userId, который имеет тип User, а не Car?
Пока я искал ответ на этот вопрос, я думал о некоторых решениях, но не могу понять, как заставить любое из них работать ..
- Сделать тип
Color
part из Car
, поэтому у меня было бы поле каждого цвета в машине напрямую, так что я думаю, что вместо этого у меня будет преобразователь, основанный на пользователе ..? - Изменение фрагмента на
'... on User'
при работе на типе Car
, но пока это не работает. - Добавление userId к типу
Car
путем его расширения, но я все равно не могу найти, как получить userId
Изменение схемы и типов с root не вариант, все изменения должны быть сделаны в Apollo Сервер.