合并模式后的“GraphQLError:类型中找不到字段:'query_root'”

Posted

技术标签:

【中文标题】合并模式后的“GraphQLError:类型中找不到字段:\'query_root\'”【英文标题】:"GraphQLError: field not found in type: 'query_root'" after merge schema合并模式后的“GraphQLError:类型中找不到字段:'query_root'” 【发布时间】:2019-11-04 06:27:46 【问题描述】:

我已经使用 graphql-tools 缝合了两个 graphql 端点。 使用一个端点架构它工作正常,但使用另一个架构它会抛出此错误 “GraphQLError:在类型中找不到字段:'query_root'”。 即使我可以在自省时看到所有架构。

    const createRemoteExecutableSchemas = async () => 
        let schemas = [];
        for (let api of graphqlApis) 
            const http =  http_link.HttpLink(
                uri: api.uri,
                fetch:fetch
            );
            const link1 = setContext.setContext((request, previousContext) => 
                return 
                    headers:authorization: previousContext.graphqlContext.headers.authorization
                
            ).concat(http);

            const link2 = setContext.setContext((request, previousContext) => (
                headers: 
                    'x-hasura-admin-secret': api.secret
                
              )).concat(http);
            const remoteSchema = await gtool.introspectSchema(link2);
            const remoteExecutableSchema =  gtool.makeRemoteExecutableSchema(
                schema: remoteSchema,
                link:link1
            );
            schemas.push(remoteExecutableSchema);
        
        return schemas;
    ;

    const createNewSchema = async () => 
        const schemas = await createRemoteExecutableSchemas();
        return gtool.mergeSchemas(
            schemas:schemas
        );

    ;

    const runServer = async () => 
        const schema = await createNewSchema();
        const server =  new ap_server.ApolloServer(
            schema:schema,
            context: ( req ) => 
                return 
                    "headers": req.headers
                
              
        );
        server.listen().then((url) => 
            console.log(`Running at $url`);
        );
    ;
    ```

【问题讨论】:

【参考方案1】:

我找到了解决方案。这是因为错误的授权被转发到第二个端点。

【讨论】:

以上是关于合并模式后的“GraphQLError:类型中找不到字段:'query_root'”的主要内容,如果未能解决你的问题,请参考以下文章

从合并两个Map说开去 - foldLeft 和 foldRight 还有模式匹配

JPA 模式:从实体生成数据传输对象 DTO 并将 DTO 合并到数据库

Git

git log

区间合并---输出合并完成后的区间个数

区间合并---输出合并完成后的区间个数