问题标签 [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 投票
0 回答
60 浏览

graphql - 远程模式上的 GraphQL 查询拦截

我想创建一个 GraphQL 网关,我想在其中为远程 GraphQL 模式创建查询拦截。例如,如果我们有一个查询“客户”应该解析为远程 GraphQL 服务器的解析器,我希望能够:

  1. 拦截客户查询之前,运行一些远程功能(拦截器),然后调用远程客户解析器。
  2. 拦截客户查询/绕过远程解析器。
  3. 在调用远程客户解析器之后,在将结果返回给用户之前拦截客户查询。

这可以使用标准的graphql-tools吗?

0 投票
0 回答
750 浏览

javascript - 无法使用 graphql-tools 正确合并模式和解析器

我尝试使用graphql-tools连接模式和解析器。为此,我将它们移动到单独的文件夹中,并使用了mergeSchemasmergeResolvers函数。我需要这样做,因为会有很多模型,文件会很大,并且会出现混乱。在我将文件移动到文件夹并开始使用 graphql-tools 后,出现了错误。请告诉我如何正确合并。下面是模式和解析器的代码(我删除了一些字段,因为它们之前运行良好,尝试使用 graphql-tools 后出现问题)。

架构代码(我使用的是 ES6 语法):

index.js(在架构文件夹中):

解析器代码:

index.js(在解析器文件夹中):

server.js(启动器):

文件和文件夹结构:

感谢关注。

0 投票
0 回答
18 浏览

graphql - 通过声明式编程实现 GraphQL Schema 委托

我正在查看 graphql-tools 的文档,想知道我们是否可以使用声明性编程模型将查询或突变委托给子模式?

https://www.graphql-tools.com/docs/schema-delegation

特别是 delegateToSchema 类型的调用,这可以通过 SDL 使用指令来完成吗?

0 投票
1 回答
430 浏览

javascript - 如何在 GraphQL 中返回枚举选项?

我在这样的架构中有一个枚举:

以及以下查询:

Ant解析器上的JS代码如下:

但是当我执行以下查询时:

我收到以下错误:

"message": "枚举“分类”不能表示值:{ A: "A", B: "B", C: "C", D: "D" }",

那么,如何解决这个错误,并在查询中返回所有分类?

谢谢

0 投票
0 回答
78 浏览

graphql - 带有批量查询的模式拼接 postgraphile 服务

我有两个目标:

  1. 在任何有趣的数据库上启动 postgraphile 服务
  2. 创建一个网关,将这些服务组合成一个仍然高性能的图形(具体来说,我对批量查询感兴趣)

从我所做的阅读来看,似乎有两种主要方法:

  1. 模式拼接来自graphql-tools
  2. 阿波罗联盟来自apollo-federation

我已经尝试过每一个,但我目前正在使用模式拼接方法。假设我有一个服务公开的用户和另一项服务公开的帖子:

现在假设我要查询所有用户并获取每个用户的帖子列表。如果这两者都是由同一个服务实现的,Postgraphile 将足够聪明地将请求批处理在一起。但由于他们在不同的服务中,我需要做一些工作来实现这一点:

  1. 在网关中,我需要将我的更新delegateToSchemabatchDelegateBySchema
  1. 在 postgraphile 服务上,我需要添加一个favoritesByUserIds解析器,它接收用户 ID 列表并返回每个用户的收藏夹

这很好用,但是对于我想要有效查询的类型之间的每一种关系,似乎需要做很多工作——我错过了什么吗?有没有更自然的方法来配置网关/postgraphile 子模式以自动处理查询批处理?

注意:我已经batch: true为网关和enableQueryBatching: truepostgraphile 服务上的每个子模式进行了配置。

0 投票
0 回答
64 浏览

postgresql - GraphQL - 将 JSON 解析为 graphql 类型数组以支持批量查询

我有一组使用graphql-tools模式拼接在网关中组合在一起的 graphql 服务。

以下是一些示例代码供参考:

在上面的示例代码中,我有三种方法来获取与用户关联的帖子:

1:User.posts

这工作正常,但不是批处理

2:User.batchPostsJSON

这非常好地批处理并且完美地解决了一个问题:JSON返回类型不允许我查询Post字段 - 无论如何我都会得到所有字段。更糟糕的是,如果Post与某些第三种类型有关,我将无法遵循这种关系。

3:User.batchPosts

这允许我查询 的字段Post,但会引发异常 - 我已将返回类型定义为 的数组Post,但返回的结果JSON是我在网关中收到错误。

有没有办法处理子模式返回的 JSON 并假装我真的[Post]回来了?当我valueFromResults完成时,这就是它的样子。问题是我的 typedef 和实际解析器之间的返回类型不匹配会在我有机会重新格式化返回值之前引发错误。

0 投票
0 回答
138 浏览

javascript - delegateToSchema 没有使用我的执行程序

我想将我的 graphql 服务中的一个字段委托给远程服务。我试图遵循文档,但我遗漏了一些东西。

结果是null。我可以看到它正在使用我的执行程序进行自省调用,通过解析字段时它使用默认执行程序,这基本上是一个无操作。通过单步执行delegateToSchema代码,它似乎想要schema成为一个schemaConfig. 所以我尝试wrapSchema像这样删除:

它使用我的执行程序而不是默认执行程序,但现在在执行程序中,query被解析为空字符串,并且variables是一个空对象。

你能看出我做错了什么吗?

我在用着:

我也试过v6.2.4。

0 投票
0 回答
34 浏览

graphql - GraphQL-tools: How do I write resolver function to search a list?

I'm just learning GraphQL, and am struggling on the return statement in a resolver function. All I want is to search for an item by ID.

My search:

I keep getting this error: "message": "Cannot return null for non-nullable field Link.url."

I think the issue is in my map function return statement, but I've tried with links.find() and other ways and just can't get it to work.

0 投票
0 回答
44 浏览

graphql - 过滤 graphql 模式的最佳方法是什么?或者,如何从 GraphQL 工具中导出模式?

我最终想要做的是:

我们正在使用代码生成器来生成与 graphql 服务器的类型安全绑定。

有时我们需要查看生成的代码。在我们的项目中,我们只对模式的一小部分感兴趣,因此在与我们永远不会关心的模式部分相关的代码海洋中找到我们感兴趣的代码是很乏味的。

所以我们想过滤掉我们不感兴趣的部分模式(除了特定的顶级对象及其类型之外的所有内容),以减少生成的代码量。

我试过的

我看过 GraphQL 工具。它可以过滤架构,并解释了如何加载架构,但我找不到任何关于如何将过滤后的架构导出回 JSON 文件(或任何内容)的信息。

0 投票
0 回答
199 浏览

apollo - 无法使用 @graphql-tools/merge 使用合并的 typeDefs 和解析器运行 apollo-server-express

嘿朋友这是我的项目和文件的结构如下: 在此处输入图像描述

app.js文件开始:

下面是Server.ts引导 apollo-server-express 的文件

这是user.resolvers.ts我的解析器放在这里的文件:

在这里,我们使用 inuser.schema.ts文件的 typeDef:

最后在./src/graphql/index.ts文件中我正在为解析器和 typeDefs 进行合并,我正在制作 executableSchema 以将其添加到 ApolloServer 配置对象,但我面临以下错误: 在此处输入图像描述

任何想法和建议将不胜感激。早期感谢贡献者:)