我花了很多时间,但找不到解决方案,请帮助我。
我获得了远程模式,然后使用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
},
})
});
游乐场显示它们嵌套在新级别中。
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
我该如何解决?
非常感谢!