在Graphql-Apollo中从remoteSchema添加根级别

时间:2018-12-03 14:32:40

标签: graphql apollo

我花了很多时间,但找不到解决方案,请帮助我。

我获得了远程模式,然后使用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

我该如何解决?

非常感谢!

0 个答案:

没有答案