问题标签 [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 回答
113 浏览

graphql-tools - 如何使用 graphql-tools 处理单个对象中的嵌套对象

我有一个使用 ExpressJS 的 GraphQL 服务器。想使用 GraphQL-Tools 编写模式:
我想得到一个像这样的对象......

通过这种设计,我可以在单个对象中维护用户的详细信息。但我找不到用 graphql-tools 做嵌套对象的方法。

当我尝试使用上述类型时,我收到控制台错误:

请任何人都可以告诉我正确的方法,或者如果我做错了,请纠正我。

0 投票
1 回答
3370 浏览

graphql - 在 GraphQL 中的 Input 和 Type 之间共享公共字段

我想知道是否有办法在 GraphQL 中的 Input 和 Type 之间共享公共字段,这样我就不必在多个地方定义相同的字段集。

例子:

我知道 Fragment 可能是一个解决方案,但如果我的理解是正确的,那么使用 Fragment 总是需要你设置一个 ON 条件,使它看起来像这样:

似乎没有办法指定“在 Person/PersonInput 上”。

0 投票
0 回答
235 浏览

graphql - Graphql 远程模式拼接和 cookie

我有两个 graphql 端点(身份验证端点 [AUTH] 和应用程序端点 [APP])。我使用“ makeRemoteExecutableSchema ”和“ introspectSchema ”创建了 api 网关。

问题是登录突变上的 [AUTH] 端点设置了一个 cookie:

问题是,当我直接向 [AUTH] 端点发出请求时,cookie 已设置(我可以看到“Set-cookie”响应标头)。但是当我通过 API 网关进行登录突变时,cookie 没有设置。如何解决我的问题?

0 投票
1 回答
873 浏览

node.js - GraphQL 嵌套查询返回 null

尝试运行以下查询时,我收到此错误:“无法为不可为空的字段 User.first_name 返回 null。”。我不期待空结果。

我期望看到的是:

我的 MongoDB 将 _id 存储在一个可以返回的数组中,但是我的用户类型中的其他任何内容都返回 null。

用户架构:

用户解析器:

网站架构:

站点解析器:

我想我需要在我的解析器中为站点查询做更多的事情,但我不确定到底是什么。我已经尝试过使用 mongoose.populate 但无济于事,我得到的最远的结果是使用 populate 方法返回一个空数组。

在此先感谢您的时间。

编辑:这是我的猫鼬模式

用户模式

网站架构:

0 投票
0 回答
435 浏览

node.js - 使用 Apollo 使用不同的端点使用相同的 GraphQL 模式

语境

今天我有一个简单的 GraphQL 拼接服务器,可以将两个 graphql 应用程序统一到一个 graphql 端点

原样

它可以内省每个服务(应用程序 1 和应用程序 2)并使用和ApolloLink为每个应用程序构建一个主机 url 。apollo-upload-clientapollo-link-http

在此处输入图像描述

mergeSchemas在此之后,我使用from graphql-toolslibray合并两个模式。

问题

现在我必须使用另一个等于应用程序 1 的服务,但它使用另一个数据库,因此使用另一个 url,但是当我使用不同的主机实例化应用程序 1 apollo-link 时,mergeSchemas 会忽略它,并且最终缝合的模式继续作为它的初始值状态。

如何使用具有不同 URL 的相同架构?

成为

我想使用不同的 url 缝合 2 个相似的模式 在此处输入图像描述

更新

我已经多次使用不同的 url 实例化模式,但这给了我重复的模式。whitch 解决了我的问题,但我认为有更好的解决方案可以保持相同的架构并通过标头切换主机,例如。

在此处输入图像描述

有没有更好的解决方案只保留 2 个模式?

0 投票
1 回答
528 浏览

graphql - “graphql-tools”中的嵌套解析器不起作用

我无法使用 graphql-tools 调用嵌套解析器。我已经在github上提交了错误,但还没有得到任何回复。

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

查询时未调用我的架构的嵌套字段。

架构

解析器

正在调用顶级“reference”的解析器函数,但不是“nestedLevel1.reference”解析器。如果我做错了什么,请纠正我。

0 投票
1 回答
853 浏览

javascript - 如何在 graphql-tool 中传递查询参数?

我正在使用graphql-tool来模拟数据以进行测试。

我希望模拟当我选择一个用户时,它会打开一个详细信息页面并显示用户公司信息。

询问

模拟服务器

但是,现在,当我使用参数 id 查询时'u1',它会返回一个随机的用户 id 例如'u2',这给我在前端显示它带来了一些麻烦。

我以为我可以在下面做这样的事情,但事实证明我错了。userundefined下面的代码中。

有没有办法在 graphql-tools 中传递查询参数?谢谢

0 投票
2 回答
940 浏览

typescript - Schema Stitching 通过添加前缀解决冲突

所以我有这两个模式

架构1

模式2

预期结果类似于:(但我对不同的想法持开放态度)合并后我想进行的查询是:

并得到类似的结果

或者

和突变如:

或者

我正在尝试transformSchema在 graphql-tools 上使用该功能,但不能完全正确地弄清楚:

getRemoteSchema 定义

我做了这个故障https://glitch.com/edit/#!/schema-stitching-conflict 所以更容易看到问题。

0 投票
1 回答
448 浏览

node.js - 如何在 api 服务器中包含字段并在将结果返回到 Graphql 中的客户端之前将其删除

我有一个 Node.js GraphQL 服务器。从客户端,我正在尝试使用如下查询获取所有用户条目:

但是,在 Node.js GraphQL 服务器中,我想返回基于条目对象publishDateexpiryDate在条目对象中当前有效的用户条目。

例如:

应该返回这个

entries是通过delegateToSchema调用(https://www.apollographql.com/docs/graphql-tools/schema-delegation.html#delegateToSchema)获取的,我没有将publishDate和expiryDate作为查询参数传递的选项。本质上,我需要得到结果,然后在内存中过滤它们。

publishDate我面临的问题是原始查询没有expiryDate支持这一点。有没有办法将这些字段添加到 delegateToSchema 调用中,然后在将它们发送回客户端时删除它们?

0 投票
1 回答
584 浏览

graphql - graphql - 解析器根/父属性为空

鉴于此架构:

我希望context.get给定的 id 返回这些形状:

控制台正在返回[null]Asset.ScanProfiles

根解析器将字段作为字符串数组返回,但是当根随后传递给joinResolvers这些文件时,这些文件为空。我假设是因为它们与定义的 typeDef 不匹配。

要解决此问题,我必须单独调用以重新获取父级,然后为子级提取存储的值。

我是否错误地定义了我的类型?我的解析器结构错了吗?