问题标签 [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.
ruby-on-rails - 在 graphql-ruby 中定义输入类型
我正在尝试使用 graphql-ruby 和 rails 实现过滤器的输入类型。
基本输入类型如下所示:
我自己的输入类型如下:
query_type 的方法头看起来像:
查询如下:
使用 react-apollo 与后端交互如下:
我收到以下错误
{消息:“PhotoFilterType 不是定义的输入类型(在 $filters 上)”,...}
但是当我与 rails 控制台交互时,我看到:
所以我认为未定义的类型不是问题。
知道出了什么问题以及如何解决吗?提前致谢。
ruby - 如何在 GraphQL::Schema 中调用自定义方法
我正在尝试在 GraphQL::Schema 中添加一个检查。我想调用一个定义了我的模式的方法。一种方法是调用 GraphqlController 中的方法。但是,我无法仅获取在突变/查询中发送的参数查询字符串。例如,我希望对所有突变和查询进行自定义验证。
graphql-ruby - How to return a Union type from a GraphQL Mutation
I want to use this pattern for returning validation failures from the GraphQL Ruby: https://medium.com/@sachee/200-ok-error-handling-in-graphql-7ec869aec9bc
From my mutation I'd like to be able to return a payload that is a union like this:
And my resolve method in the mutation is something like this;
The client can then call the mutation thus;
How in GraphQL-ruby can I return a Union as a payload?
ruby - 重新定义 GraphQL Schema 上的自定义订阅
我们正面临一个问题,我们希望动态替换 GraphQL Schema 上的自定义订阅对象(主要用于测试)。我们目前有以下架构:
CustomSubscriptions
本身派生自GraphQL::Subscriptions
并使用一些外部依赖项来存储/触发订阅。在测试时,我们不一定要处理这些依赖关系,所以我们想用一些模拟或一些不需要相同外部依赖关系的实现来替换那里的订阅。例如,我想做:
但是,这不会将我们CustomSubscriptions
从模式中删除。我试图更新架构以允许设置订阅实例,但到目前为止没有成功。
有没有办法完成我所追求的?我错过了一些 setter/helper 方法?
ruby - 如何为名称以 Type 结尾的类编写 GraphQL 类型定义
我正在尝试定义 GraphQL 类型定义。据我了解,一个类必须有一个像类一样命名的类型定义,加上一个附加的Type
. 我有一个名为 的类CourseType
,它引导我进行这种类型定义:
应用程序/graphql/types/course_type_type.rb
当我尝试打开 GraphiQL 站点时,我在 rails 控制台中看到以下错误:
我认为问题的出现是因为类名以 结尾Type
,因为我有另一个类Course
,其类型定义名为CourseType
,它工作正常。
我在 Google 上没有找到任何类似的错误或文档。我该如何正确地写这个?谢谢你。
graphql - 在 GraphQL ruby 中的任何查询之前运行函数
我想在我在 GraphQL 上运行任何查询之前运行一个函数。我想控制一些条件并抛出 GraphQL:: ExecutionError 以防它捕获错误。我知道有一个基本查询在任何查询之前运行,但需要检查用户是否登录或不运行查询并在此处抛出错误会停止执行,我不认为放置它的正确位置上。如何在进行任何查询之前执行函数?这是我到目前为止所尝试的:
ruby-on-rails - 根据 graphql-ruby 中的解析器参数更改类型字段的值
我正在尝试计算类型的字段值,但我必须考虑用户(查询)传递给我的解析器的参数。
一个虚拟的例子:
假设我的 rails 应用程序中有两个模型:Dog
和Price
(狗的has_many
价格,取决于它的颜色)。所以我有一个计算字段DogType
:field :price, Float, null: true
我在哪里object.prices.minimum(:price)
,到目前为止一切都很好。
但是当用户allDogs
使用参数查询时color: black
(为了只列出黑狗),我不希望我的计算字段price
返回所有狗的错误价格,所以我必须考虑到我的过滤器解析器,因此也过滤类型中的价格。
我的问题很重要,graphql-ruby
但我对如何使用 GraphQL 样板解决此类问题很感兴趣:如何正确了解对象类型,解析器应用了哪些过滤器?
我按照这个学习进行过滤,所以我的解析器看起来像这样:
这可行,但似乎效率很低,不是 Rail 的方式,而且绝对容易出错。我必须在我的应用程序的多个地方执行此操作,并且担心它无法很好地扩展。
有没有官方的处理方式?
为了理解,我简化了我所面临的真实示例,但我认为我的核心问题在于这个。
ruby-on-rails - 仅在测试中无法解析 GraphQL 模式中的接口类型
我创建了一个接口类型,例如:
一个看起来像这样的查询:
当我在本地运行它时,一切正常,我能够解析我的派生类型并进入该resolve_type
方法。
当我在 rspec 中运行时:
我收到以下错误:
GraphQL::RequiredImplementationMissingError: schema contains Interfaces or Unions,所以你必须定义一个
resolve_type -> (obj, ctx) { ... }
函数
根据我对错误消息的理解,它希望我将resolve_type
方法直接放在Schema
对象上,尽管我应该能够definition_methods
像上面那样直接在接口中定义它。
ruby-on-rails - Rails 和 graphql 大小写约定
我开始深入研究 graphql,用 Rails 构建我的第一个 API。我有很多关于标准和约定的问题。
例如,我注意到 gemgraphql
默认情况下需要在 CammelCase 中传递字段,而实际上当我在 Rails 中构建 RESTful API 时,我总是在 snake_case 中接收参数。
所以我想知道,CammelCase 是 Graphql 的约定吗?我还应该在我的 API 中使用它吗?我所有的测试都会断言响应也在蛇案例中,对吗?
ruby-on-rails - 如何在多个 graphql ruby 突变之间共享代码?
我想编写一个由多个突变使用的方法,类似于在控制器中定义一个在多个操作之间共享的方法。我怎样才能做到这一点?