Добавить корневой уровень из remoteSchema в Graphql-Apollo - PullRequest
0 голосов
/ 03 декабря 2018

Я потратил много часов и не могу найти решение, пожалуйста, помогите мне.

Я получаю удаленную схему, а затем использую функцию 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

Как это исправить?

Большое спасибо!

...