问题标签 [graphql-ruby]

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

ruby - 解析器的未定义方法“deprecation_reason”

我正在为某些字段定义解析器,使用 ruby​​ 的 graphql gem。

这是解析器定义:

这是 BaseResolver 类:

这就是我称之为解析器的地方:

这是我使用 Insomnia 得到的回应:

"message": "Resolvers::Events:Class 的未定义方法 `deprecation_reason'\n你的意思是?deprecate_constant"

0 投票
1 回答
655 浏览

graphql - 在 graphQL 查询中传递参数

我刚刚开始学习 GraphQL,目前正在尝试创建 twitter 的克隆。在下面的代码中,有没有一种方法可以将 id 参数(例如 user(id: 81))中的 81 自动传递给 userId 参数(例如 tweets(userId: 81))?

我在下面复制了我的代码

用户类型.rb

tweet_type.rb

查询类型.rb

0 投票
0 回答
474 浏览

graphql - 如何在 Graphql Ruby 中接受嵌套查询的字段参数?

我在 GraphQl(Apollo JS/Graphql Ruby)中遇到了这个错误: Error Error: GraphQL error: Field 'pagination' doesn't accept argument 'pagination' GraphQL error: Variable $pagination is declared by Clients but not used. Reload the page and try again.

我有这个查询:

我有这个作为我的输入类型:

这在我的query_type.rb文件中:

关于如何将论点传递给此顶层以外的其他东西的任何想法client?我在这里阅读过文档,但无法弄清楚。

谢谢!

0 投票
0 回答
250 浏览

ruby - clientMutationId 如何在前端进行乐观更新?

我正在阅读有关 GraphQL 突变的信息,并且必须决定是否在 graphql-ruby 中使用 Relay 突变。我偶然发现了clientMutationId这里https://graphql-ruby.org/api-doc/1.8.5/GraphQL/Schema/RelayClassicMutation.html

clientMutationId显然用于乐观更新(在这里找到什么是前端开发中的“乐观更新” ),但我不确定这是如何使用的。

似乎您传递了clientMutationId您的突变,并且服务器在响应中返回了这个值。但是这样做的目的是什么?某种客户端幂等性?

0 投票
1 回答
337 浏览

ruby-on-rails - 访问子字段时如何让 graphql-ruby 使用连接?

我有一个这样的模型

和这样的查询

当我获取此查询时,我会select * from "foos"为集合中的每个条获取一个。

我怎样才能让这一切变得更聪明并减少 SQL 查询?

0 投票
2 回答
800 浏览

ruby-on-rails - 如何避免对 has_many 的 N+1 查询:通过关联

我正在使用 Ruby on Rails 和 graphql gem 构建一个 GraphQL API。现在我有一些n:m关系,比如Projectshave manyUsersUsershave many Projects。我的模型是这样的:

现在我想用这样的查询来查询所有项目及其对应的项目经理:

而且我的解析器基本上就像Project.all和每个Project调用一样project.projectManagers,这会导致数百个查询:

我添加了子弹宝石,但没有关于缺少急切加载的警告。事实上,如果我使用Project.all.includes(:project_managers),我会得到我想要的查询 ( SELECT "project_assignments".* FROM "project_assignments" WHERE "project_assignments"."project_id" IN ($1, $2, $3, $4, $5, $6, $7, $8, ...)),但User无论如何都会触发查询:

有什么我可以做的预加载用户?

eager_load也尝试过,但结果基本相同(尝试了另一个具有正常has_many关联的示例(否:through):

0 投票
1 回答
1498 浏览

union - 使用 graphql-ruby 实现联合类型

我正在尝试使用graphql-ruby.

我遵循了官方文档,但得到了下面列出的错误。

这是我当前的代码。

这是 graphql 查询。

当我发送查询时,出现以下错误。

找不到任何错字或任何东西。

我错过了什么吗?

0 投票
2 回答
642 浏览

ruby-on-rails - habtm 中的 Graphql-ruby 范围,嵌套查询中的数据泄漏

这是使用标准 graphql-ruby 设置时发生的数据泄漏的示例。

使用下面的 graphql 嵌套请求,响应返回嵌套在公司 1 下的数据,该数据属于公司 2。我希望响应仅限于属于它嵌套的公司的会计日志。

那样的话,就是在泄露信息。

问题是我们如何修补泄漏,以便响应中返回的唯一数据及其嵌套对象是属于公司的数据(根对象)。

这个查询:

返回此响应:

在公司 1 的嵌套元素中泄露公司 2 的事务日志数据。

同样,问题是:我们如何保持范围,仅在所显示的公司的上下文中显示数据?

重现代码:

GraphQL 类型(使用 graphql-ruby gem)

楷模

种子.rb

包含完整代码的公共回购,旨在作为教育资源:

https://github.com/rubynor/graphql-ruby-training-ground

0 投票
1 回答
412 浏览

ruby-on-rails - 使用 Active Record 的 Graphql-Ruby 映射

我对使用 Rails 完全陌生,我正在尝试使用 ruby​​-graphql 创建一个基本的 crud 应用程序,以对 sqlite3 数据库进行带有活动记录的简单查找查询。我设置了一个用户类型

然后我设置查询:

我的查询是:

我收到以下错误:

如果有人可以帮助我,我将不胜感激。如何在 Ruby/Rails 中进行这种转换?

0 投票
1 回答
853 浏览

ruby-on-rails - 在 GraphQL 模式中获取上下文

我正在使用 graphql-ruby 并试图保护管理员在这样的架构中的突变

但我没有那里的上下文。也尝试在 中做同样的事情Types::Admin::MutationType,同样的结果。

是否可以在解决之前在任何地方检查上下文?