Я потратил много часов и не могу найти решение, пожалуйста, помогите мне.
Я получаю удаленную схему, а затем использую функцию makeRemoteExecutableSchema
, чтобы открыть ее на прокси-сервере.Но я должен сгруппировать все запросы на новом корневом уровне (добавив Corporate в качестве префикса), и это работает.
Вот как я это делаю.Я не знаю, нормально ли добавить этот уровень в качестве следующего кода, сначала создав объект второго уровня и вернув новый корневой объект, включающий его.
const queryType = schema.getQueryType();
const CorporateQuery = new GraphQLObjectType({
name: queryType.name,
description: queryType.description,
isTypeOf: queryType.isTypeOf,
fields: fieldMapToFieldConfigMap(fields), // return GraphQLFieldConfigMap<any, any>
interfaces: queryType.getInterfaces()
});
return new GraphQLObjectType({
name: 'CorporateQuery',
description: '',
fields: () => ({
Query: {
type: CorporateQuery,
resolve: () => CorporateQuery
},
})
});
Playground показывает их вложенные в новый уровень.
https://images2.imgbox.com/64/fa/5I9DGL5G_o.png
Перед этим у меня были все запросы независимо.Но когда я пытаюсь использовать некоторые из них, это не работает.
Вот мой код схемы.
const schemaDefinition = await introspectSchema(link);
const renameSchema = (schemaDefinition, prefix) => {
return transformSchema(
schema,
[
new RenameRootFields((operation, name) => `${prefix}${name}`),
]
);
};
const renamedSchema = renameSchema(transformedSchema, 'Corporate');
const schema = makeRemoteExecutableSchema({
schema: renamedSchema,
// Irrelevant apollo links
link: ApolloLink.from([permissionLink, databaseLink])
});
Я получаю следующую ошибку ..
{
"errors": [
{
"message": "Cannot query field 'CorporateQuery' on type 'Query'. (line 2, column 3):\n CorporateQuery {\n ^",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"CorporateQuery"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"errors": [
{
"message": "Cannot query field 'CorporateQuery' on type 'Query'. (line 2, column 3):\n CorporateQuery {\n ^",
"locations": [
{
"line": 2,
"column": 3
}
]
}
]
}
}
}
],
"data": {
"CorporateQuery": null
}
}
https://images2.imgbox.com/e6/81/fVryTOi5_o.png
Как это исправить?
Большое спасибо!