问题标签 [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.
graphql - 远程模式上的 GraphQL 查询拦截
我想创建一个 GraphQL 网关,我想在其中为远程 GraphQL 模式创建查询拦截。例如,如果我们有一个查询“客户”应该解析为远程 GraphQL 服务器的解析器,我希望能够:
- 拦截客户查询之前,运行一些远程功能(拦截器),然后调用远程客户解析器。
- 拦截客户查询/绕过远程解析器。
- 在调用远程客户解析器之后,在将结果返回给用户之前拦截客户查询。
这可以使用标准的graphql-tools吗?
javascript - 无法使用 graphql-tools 正确合并模式和解析器
我尝试使用graphql-tools连接模式和解析器。为此,我将它们移动到单独的文件夹中,并使用了mergeSchemas和mergeResolvers函数。我需要这样做,因为会有很多模型,文件会很大,并且会出现混乱。在我将文件移动到文件夹并开始使用 graphql-tools 后,出现了错误。请告诉我如何正确合并。下面是模式和解析器的代码(我删除了一些字段,因为它们之前运行良好,尝试使用 graphql-tools 后出现问题)。
架构代码(我使用的是 ES6 语法):
index.js(在架构文件夹中):
解析器代码:
index.js(在解析器文件夹中):
server.js(启动器):
文件和文件夹结构:
感谢关注。
graphql - 通过声明式编程实现 GraphQL Schema 委托
我正在查看 graphql-tools 的文档,想知道我们是否可以使用声明性编程模型将查询或突变委托给子模式?
https://www.graphql-tools.com/docs/schema-delegation
特别是 delegateToSchema 类型的调用,这可以通过 SDL 使用指令来完成吗?
javascript - 如何在 GraphQL 中返回枚举选项?
我在这样的架构中有一个枚举:
以及以下查询:
Ant解析器上的JS代码如下:
但是当我执行以下查询时:
我收到以下错误:
"message": "枚举“分类”不能表示值:{ A: "A", B: "B", C: "C", D: "D" }",
那么,如何解决这个错误,并在查询中返回所有分类?
谢谢
graphql - 带有批量查询的模式拼接 postgraphile 服务
我有两个目标:
- 在任何有趣的数据库上启动 postgraphile 服务
- 创建一个网关,将这些服务组合成一个仍然高性能的图形(具体来说,我对批量查询感兴趣)
从我所做的阅读来看,似乎有两种主要方法:
我已经尝试过每一个,但我目前正在使用模式拼接方法。假设我有一个服务公开的用户和另一项服务公开的帖子:
现在假设我要查询所有用户并获取每个用户的帖子列表。如果这两者都是由同一个服务实现的,Postgraphile 将足够聪明地将请求批处理在一起。但由于他们在不同的服务中,我需要做一些工作来实现这一点:
- 在网关中,我需要将我的更新
delegateToSchema
为batchDelegateBySchema
- 在 postgraphile 服务上,我需要添加一个
favoritesByUserIds
解析器,它接收用户 ID 列表并返回每个用户的收藏夹
这很好用,但是对于我想要有效查询的类型之间的每一种关系,似乎需要做很多工作——我错过了什么吗?有没有更自然的方法来配置网关/postgraphile 子模式以自动处理查询批处理?
注意:我已经batch: true
为网关和enableQueryBatching: true
postgraphile 服务上的每个子模式进行了配置。
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 和实际解析器之间的返回类型不匹配会在我有机会重新格式化返回值之前引发错误。
javascript - delegateToSchema 没有使用我的执行程序
我想将我的 graphql 服务中的一个字段委托给远程服务。我试图遵循文档,但我遗漏了一些东西。
结果是null
。我可以看到它正在使用我的执行程序进行自省调用,通过解析字段时它使用默认执行程序,这基本上是一个无操作。通过单步执行delegateToSchema
代码,它似乎想要schema
成为一个schemaConfig
. 所以我尝试wrapSchema
像这样删除:
它使用我的执行程序而不是默认执行程序,但现在在执行程序中,query
被解析为空字符串,并且variables
是一个空对象。
你能看出我做错了什么吗?
我在用着:
我也试过v6.2.4。
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.