问题标签 [graphql]

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 回答
2464 浏览

reactjs - 错误:字段类型必须是输入类型 - 不能将 qlType 传递给突变

我想personUpdatePerson突变更新 a 。我不想在inputFields- 中指定每个属性,而是想传递完整的 person 对象。

当我这样做时,我得到Error: UpdatePersonInput.person field type must be Input Type but got: Person.

有没有办法将完整的对象而不是它们的所有属性传递给突变?

如果没有,您能否添加一个 - 因为在具有较大对象的较大应用程序中重复字段的数量可能会变得非常令人沮丧。

同样可能是getFatQuery和的问题static fragments。一遍又一遍地重复所有属性将是一场噩梦。

服务器:

客户:

0 投票
1 回答
545 浏览

relayjs - 突变不获取由胖查询与 RANGE_ADD 一起指定的数据?

我试图理解RANGE_ADD。我已经提供了突变配置, for RANGE_ADD,以及所有必需的信息。我使用viewer命名约定,我的连接嵌套在viewer. 下面是我完整的中继突变的样子......

我为viewerid 提供了一个片段,在运行时getConfigs,我可以看到该片段存在。

在 GraphQL 突变响应负载中,提供CreateTeamPayload了该viewer字段,以便 Relay 可以利用突变配置中的连接RANGE_ADD。此外,在 内CreateTeamPayload,新边被提供为edge

这三位信息(父级的查看器 ID、连接信息和边缘)似乎就是所有RANGE_ADD要求。我还确保通过 fat 查询从服务器请求这些数据,以便 Relay 可以访问它以进行突变配置。

不过,中继似乎不包括我在胖查询中指定的内容,以及突变配置所需的内容,以及它分派到服务器的内容。Relay 所要求的只是clientMutationId. 这是 Relay 发出的请求...

并且,以连锁反应的方式,这会导致 Relay引发错误,他期望viewerand用于突变配置。edge

如果 Relay 包含这些必填字段,则它们完全可以存在。是否RANGE_ADD必须伴随REQUIRED_CHILDREN才能工作?突变通过服务器,并在服务器上创建记录,只是客户端突变配置未能将更改的数据合并到存储中。

0 投票
1 回答
466 浏览

post - GraphQL 服务器对 GET 响应 OK,但对 POST 不响应

我在 Hapi 上配置的 graphql 服务器对 GET 请求的响应很好:

但是... 404 使用 POST:

这是为 Hapi 配置的路由:

0 投票
1 回答
1634 浏览

mime-types - 支持 hapi 中的其他 mime 类型

我正在开发一个基于 hapi 的 graphql + 中继应用程序,并希望支持对具有application/graphqlmime 类型的 graphql 端点的请求。

在这里,您可以看到我向 graphql 端点发送 POST 请求。

在我的 hapi 服务器选项中,除了此处的一些简洁文档之外,我没有看到任何地方有任何针对 mime 类型的显式配置。

我已经按照以下设置了一个选项 mime 配置,将选项传递到服务器实例化中,但我仍然看到"Unsupported Media Type"错误。

这里有其他人有这种hapi经验吗?

0 投票
2 回答
8398 浏览

graphql - GraphQLInterfaceType 和 GraphQLUnionType 的真实示例

我很难理解何时使用GraphQLInterfaceTypeand GraphQLUnionType

我有 RTFM:

任何人都可以提供一个真实世界的例子,当这些对我的厚脑袋有用时?

0 投票
0 回答
104 浏览

graphql - 我可以使用来自更高级别字段的属性作为 GraphQL 查询中较低级别字段的输入参数吗?

我可以使用来自更高级别字段的属性作为 GraphQL 查询中较低级别字段的输入参数吗?

例如,足球俱乐部有球员和赛季。在每个赛季,俱乐部的一部分球员都会为俱乐部踢球。俱乐部的球员每个赛季可以有不同的球队号码。

我想查询俱乐部的球员一个赛季,以及他们那个赛季的球队号码,对于每个球员,我想要一个他们在那个赛季打过的比赛的列表。

我可以得到一个球员为俱乐部踢过的所有比赛(所有赛季)的列表。但我想过滤该列表,以便仅查询赛季中的游戏包含在列表中。

如果这不可能,我是否应该引入一个SeasonPlayerGraphQL 类型(包含一个赛季球员的队号)?或者我应该使用包含季节 ID 的查询参数?

0 投票
5 回答
1905 浏览

javascript - Relay/GraphQL 上的身份验证和权限

Facebook 没有提及他们的 GraphQL 库的身份验证。

假设我有一个可从 GraphQL 获取的用户表,并且我不希望将用户信息透露给除登录用户之外的任何需要它的人,我应该在哪个级别添加身份验证层?

在模式级别通过改变“登录”状态?

或者也许通过将额外的参数传递给当前只接受and的graphql函数?queryschema

0 投票
2 回答
5092 浏览

node.js - 在 GraphQL 服务器中实现访问控制的好模式是什么?

背景:

我有一组模型,包括用户和各种其他模型,其中一些包含对用户的引用。我通过Graffiti生成的 GraphQL API 公开这些模型以进行查询,该 API 由使用graffiti-mongoose适配器的 Mongo 数据库提供支持。我当前的 REST API(我正在迁移到 GraphQL)使用 JSON Web Tokens 来验证用户,并在服务器端有一些自定义权限逻辑来处理访问控制。

问题:

我想根据当前登录用户限制对 GraphQL 中对象的访问。某些模型应该可以通过未经身份验证的调用进行读取。大多数其他模型应该只能由创建它们的用户访问。通过 Graffiti 生成的 API 管理对对象的访问控制的最佳方式是什么?

一般来说,GraphQL 是否有良好的访问控制模式?特别是,有没有什么好的例子或库可以用 Graffiti 来做这件事?

笔记:

我知道已经为 graffiti-mongoose 实现了 pre-hook 和 post-hook ,并且它们可用于进行基本的二进制检查以进行身份​​验证。我想看看如何在 GraphQL API 中使用更详细的访问控制逻辑。将来,我们将希望支持管理员之类的东西,这些管理员有权访问由特定用户组(例如,其隶属关系包括管理员的用户)创建的模型实例。

0 投票
2 回答
10786 浏览

relayjs - 中继/graphql 查询中的 3 个点/句点/省略号是什么意思?

中继文档包含以下片段:

... on Faction在语法上是什么意思?

0 投票
1 回答
530 浏览

postgresql - 在 GraphQL+Sequelize+CLS 中抛出错误后事务仍然自动提交

我想知道编码中是否有任何部分我做错了。我正在尝试做一系列的功能和检查,如果有一些条件不满足,我想回滚事务。

我指的是stackoverflow上的参考资料

抛出新错误后,我的事务仍然被提交。

这是我的示例编码。

在 schema.js 我有