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

node.js - 如何在express中实现resolveType函数/初始化graphQL服务器

我有 2 个关于 GraphQL 的问题。

  1. 我使用创建了一个架构,makeExecutableSchema因此我可以创建一个executableSchema. 我像这样导出executableSchema和初始化服务器app.js

executableSchema但我想知道这是否是同时传递schema和的正确方法rootValue

  1. 我该如何实现该resolveType功能以及在哪里实现?

我收到一条错误消息 Error: Abstract type "LoginResult" must resolve to an Object type at runtime for field "Query.login" with value { __typename: "EmailNotFound" }, received "undefined". Either the "LoginResult" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.

一般来说,我创建了我LoginResult的 as,union以便我可以在前端收到更具体的错误消息,以处理不同的错误消息。

这就是我LoginResultschema样子

login解析器方法看起来像这样

这就是我从前端创建查询的方式

任何帮助都会得到帮助!

0 投票
1 回答
2245 浏览

javascript - 无法让 Graphql-tools 读取我的 schema.graphql 文件

我正在使用 Apollo-server-express 和 Graphql-tools。我一直在阅读 Graphql-tools 文档,但我无法让它工作。我正在尝试将我的 schema.graphql 文件导入为我的 typeDefs。似乎 Graphql-tools 应该让这一切变得简单,但有些东西并没有到位。

index.js

架构.graphql

在其当前状态下,我收到一条错误消息:“错误:typeDefs 必须是字符串、数组或模式 AST,得到对象”

据我了解,makeExecutableSchema 应该执行所有必要的步骤,例如将架构更改为字符串。我似乎无法弄清楚这里发生了什么,任何帮助将不胜感激。

0 投票
1 回答
529 浏览

reactjs - 使用 graphql-tools、apollo-link-schema 和 react-hooks 在模拟时总是返回 undefined

我是在 React 中使用 GraphQL 的新手,并且一直在将一个项目从 REST API 转移到一个新的 GraphQL 中。作为其中的一部分,我想设置模拟数据以独立于正在完成的 GQL API 在应用程序上工作。我花了很多时间尝试遵循 Apollo 和GraphQL 工具文档,但无论如何,我似乎无法让模拟解析器正常工作。对于上下文,我在 NextJS/React 应用程序中使用它,这是我正在尝试做的最小示例:

设置 App.js

人.js

查看 console.log(error) 结果会产生错误Cannot return null for non-nullable field Query.getPerson并使其成为可为空的字段{ getPerson: null }当然只是返回。我尝试将解析器结果作为对象与函数返回。在解析器中记录显示查询部分正在执行,但其中没有嵌套任何内容。

我是否设置不正确?我还尝试不按照基于 graphql-tools 文档的建议传递自定义模拟,但无济于事。我还在 apollo hooks GitHub 上看到了这个问题,说最新版本的 hooks 破坏了 addMocksToSchema 的使用,所以我尝试使用建议的 3.1.3 版本,但还是没有运气。任何帮助将不胜感激!

0 投票
0 回答
458 浏览

node.js - 根突变/查询中有多个 GraphQL 实体?

如何将来自不同实体的多个查询/突变添加到 graphql 模式?

我有一个名为 User.graphql 的文件并定义了架构:

它有效。现在我想添加另一个实体,称为事件和相关的查询和突变。它应该如下所示:

伪代码:

那么,如何在上面显示的伪代码等实体之间连接查询和突变?这是一种好方法和适当的架构吗?

我还附上了.js代码

0 投票
0 回答
190 浏览

javascript - 如何将解析器动态导入流星中的模式?

我正在尝试将解析器和类型文件动态地导入模式中,并且我使用流星-cleverbeagle 入门工具包。但是当我尝试使用 loadFilesSync 方法时,我在控制台上得到了这个:错误:找不到模块'meteor/mongo'。如何动态导入解析器?提前致谢。

文件结构:

合并的.js:

/startup/server/api.js

0 投票
1 回答
53 浏览

graphql - 如何嵌套 qraphql 解析器以便对它们进行分组

我在 GraphQL 中封装了一系列 REST API,但无法让解析器工作。

我的 typeDefs

和我的解析器

如果我尝试这个查询

我回来

但是,如果我不将页面嵌套在站点中

并使用解析器

然后我尝试这个查询

我回来了,正确的,

我将从许多 API 中提取数据来填充我的图表,因此想根据sitevsuser等对各个部分进行分组,但是在尝试嵌套解析器时我遗漏了一些明显的东西。我究竟做错了什么?

0 投票
1 回答
165 浏览

javascript - 如何使用 graphql-tools 调用查询

我想构建一个 GraphQL API。但是,我不想使用 express 或 connect,这使我无法使用express-graphql. 我的架构是使用 from 的makeExecutableSchema方法生成的graphql-tools。这意味着我需要以某种方式手动调用架构上的查询。

基本上,我需要这样的东西:

此外,如果请求来自浏览器,我需要显示 GraphiQL。

这样的事情可能吗?

0 投票
0 回答
25 浏览

graphql-js - graphql 执行工作流

TL-DR:
如何让 graphql.js 引擎递归调用解析器|指令返回模式无关对象?关于graphql执行流程的一些深入文档的任何链接?

详细信息:
我需要以自定义方式利用 graphql.js 执行工作流程:
我想让 graphql 引擎通过查询递归,但我希望我的解析器返回一些特定的自定义对象,描述获取什么以及如何获取,在这样的最终在 GQL 查询执行结束时,最后一步可以收集动态生成的结构化块以执行单个 fetch|query 并在一轮中返回正确的响应
我做了一些结合指令和graphql-middleware 中间件
的黑客攻击看起来是在最后一步挂钩并执行实际数据获取的合适工具,但 graphql 执行流程中的某些内容阻止我正确递归和收集 fetch-info-objects,尤其是使用指令。

[编辑]
我知道,作为最后的手段,我可​​能会退回到info描述传入查询的对象的手动递归,
但我最终会在某种程度上复制 graphql 引擎的自然流程。
此外,info对象没有记录
,所以我想避免复杂的手动操作

0 投票
1 回答
86 浏览

graphql - Apollo Server:如何在没有指令的情况下对所有“id:ID”字段进行后处理?

我们的架构如下所示:

后端返回自动增量 ID,我们希望按类型为它们添加前缀,目前,我们正在为此使用指令:

有没有办法避免@uniqueID到处添加而只取决于ID类型?换句话说,是否可以针对我们的原始模式编写模式访问者?

0 投票
0 回答
37 浏览

graphql - 从驱动程序推断出架构后,如何合并架构?

我使用 inferSchema 直接从 neo4j 数据库生成 GraphQL 类型定义,如下所示:

现在我需要将上面的模式与另一个模式合并,这样我就可以扩展一个类型,但是每次我尝试都会引发这个错误:

初始化 Neo4j 架构
这可能需要一些时间,具体取决于数据库 pathToProject\node_modules\graphql\validation\validate.js:124 的大小
throw new Error(errors.map(function (error) { ^ Error: Cannot extend type " Municipio”,因为它没有定义。

这是我尝试合并它的完整代码: