问题标签 [graphql-tools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2924 浏览

graphql - 枚举 GraphQL 查询中的所有字段

给定Apollo Server的 GraphQL 模式和解析器以及 GraphQL 查询,有没有办法在解析器函数中创建所有请求字段(在对象或地图中)的集合?

对于一个简单的查询,很容易从info解析器的参数重新创建这个集合。

给定一个模式:

和解析器:

使用这样的简单递归infoParser函数:

以下查询导致此日志:

事情很快就会变得很丑陋,例如当您在查询中使用片段时:

GraphQL 引擎在执行时正确忽略重复、(深度)合并等查询字段,但它没有反映在info参数中。当您添加联合内联片段时,它会变得更加复杂。

考虑到 GraphQL 的高级查询功能,有没有办法构建查询中请求的所有字段的集合?

有关info参数的信息可以在 Apollo 文档站点graphql-js Github repo中找到。

0 投票
0 回答
222 浏览

graphql - 在 graphql 服务器中实现指令

如何实现支持这样的模式:http: //graphql.org/learn/queries/#directives

当我在参数前使用 $ 时,我得到一个解析错误

我已经尝试过直接的 graphql.js 和 graphql-tools。当我的架构中有 $ 时,我都会遇到错误。我错过了什么?

如果有参考实现或关于如何实现指令的示例(不是自定义指令,如果 $variable @include 或 $variable @skip 仅是标准指令),将会有所帮助。

0 投票
3 回答
2157 浏览

graphql - 如何限制查询自省

我有一个由 apollo-server 提供支持的 node.js 项目。我使用自定义@admin指令对查询、突变和对象字段进行权限检查。对于查询和突变,此指令会引发错误,对于字段,它返回 null 而不是实际值。

现在,我想将 graphql ui 添加到我的项目中,以便其他开发人员可以探索我的 graphql 架构。但是,我希望他们看到匿名用户看到的模式,即他们不应该知道@admin字段和@admin查询的存在以及所有突变(甚至是非管理员的突变)。即使那些拥有执行这些操作的凭据(即以管理员身份登录)的人也不应该看到架构的这些部分。

据我了解,graphiql 发送特殊的自省查询,其中包含显示模式__schema及其__type文档的字段。

是否可以以某种方式修改我的架构,该架构是使用makeExecutableSchemafrom构建的graphql-tools以实现我的目标?

0 投票
1 回答
544 浏览

apollo-client - 如何在 graphql-tools addMockFunctionsToSchema 中返回 GraphQL 错误?

我想按照这种模式graphql-tools/addMockFunctionsToSchema在模拟解析器中模拟错误响应:

这可以正常工作并且确实返回 GraphQL 错误,但是:

  1. 看起来它只是返回一个错误,因为它是一个内部服务器错误,抛出这一
  2. 我想模拟一个实际的 GraphQL 错误响应,表明用户输入无效
0 投票
1 回答
1816 浏览

graphql-tools - graphql-tools,如何使用 mockServer 模拟“突变”?

我尝试使用mockServerofgraphql-tools来模拟一个Mutation.

这是我的单元测试:

但是,出现错误:

而且,我读了graphql-tools interface.d.ts文件。

显然, 中没有mutation功能mockServer

mockServer支持吗Mutation

https://github.com/apollographql/graphql-tools/issues/279

0 投票
1 回答
3884 浏览

apollo - 如何在 Apollo graphql 中添加联合类型

我创建了这个问题以防有人对如何在 Apollo中添加联合/多态类型感到好奇。希望这将使他们更容易。

在此示例中,我希望响应为 aWorksheetApiError

0 投票
0 回答
245 浏览

javascript - 有没有一种简单的方法可以在远程 graphql 模式上移动字段?

我正在尝试使用 graphql-tools for node 与远程模式集成。

我有远程模式,但不幸的是,所有查询都是在Viewer类型而不是Query类型上定义的。

我想用它graphql-tools来转换模式并将一些字段从Viewer类型移动到Query类型。

我尝试了几种不同的方法:包括delegateToSchema自定义解析器和ExtractField转换,但它们没有奏效。delegateToSchema似乎是正确的方法,但不幸的是它只能委托给根类型,而不是像Viewer.

有谁知道我如何将一个字段添加到Query委托给该类型上的一个字段的Viewer类型中?

0 投票
1 回答
646 浏览

graphql - 远程 GraphQL 模式的别名类型名称

我在 graphql-tools 中使用 makeRemoteExecutableSchema 来检索远程模式,然后将其与本地模式合并。我想为远程模式上的类型名称添加一个前缀。是否有捷径可寻?

0 投票
1 回答
578 浏览

graphql - 使用身份验证的 graphql 模式拼接

我的想法是使用 graphql 和无服务器创建一个微服务方法。

我正在考虑为 dynamodb 中的每个表创建一个服务,然后创建一个 apigateway 服务,并在 apigateway 服务中使用 graphql-tool 将模式拼接在一起。

这项工作非常好,我很满意。

但现在我想为我的 graphql 查询和突变添加授权。

我在 apigateway 中添加了一个自定义 autherizer,它从客户端解析 JWT 令牌并将其发送到带有 userId 的 graphql 上下文

但现在我想为我的解析器添加授权。

最好的方法是什么?

我希望它尽可能模块化,最好(我认为)是在 apigatway 服务中添加授权,以便我的其他服务保持清洁。但我不知道怎么做?

有任何想法吗?

0 投票
1 回答
458 浏览

react-apollo - Apollo GraphQL 中的 makeExecutableSchema 和 buildClientSchema 有什么区别

我正在尝试为我们的反应客户端构建一个模拟基础设施。在两者之间感到困惑。