【问题标题】:How to get all user model with GraphQL如何使用 GraphQL 获取所有用户模型
【发布时间】:2017-05-04 00:24:30
【问题描述】:

我已经为此苦苦挣扎了一个多小时,但似乎无法让它发挥作用。

我将 GraphQL 的 ruby​​ 实现与 Rails 一起使用,并且我正在尝试使用 GraphQL 执行 User.all。我有以下定义字段用户的 QueryType。

QueryType = GraphQL::ObjectType.define do
  name "Query"
  description "The query root for this schema"

  field :users do
    types[IndexUserType]

    resolve -> () {
      User.all
    }
  end
end

以及IndexUserType定义如下:

IndexUserType = GraphQL::ObjectType.define do
  name "IndexUserType"
  description "An Index User"
  field :firstname, types.String
end

我正在尝试使用以下查询获取所有用户的名字:

query={ users { firstname } }

通常我可以对 Has-Many 关系进行以下操作,但这不起作用,我认为这是因为没有父级就无法设置“obj”。

resolve -> (obj, args, ctx) {
  obj.cousins
}

【问题讨论】:

    标签: ruby-on-rails ruby rubygems graphql


    【解决方案1】:

    经过多次反复试验,我设法通过以下方式解决了一个问题:

    field :users, types[IndexUserType] do
      resolve -> (obj, args, ctx) {
        User.all
      }
    end
    

    【讨论】:

      【解决方案2】:

      在您的原始解决方案中,您在块中定义了字段的属性,当您这样做时,您需要通过以下方式声明类型:

      field :users do
          type types[IndexUserType] # <-- Note the addition of 'type'
          ...
      end
      

      您的第二个解决方案将参数列表中的相同信息传递给同样有效的“字段”。这是通过InstanceDefinable mixin 支持的。您可能想查看GraphQL::Field 的文档,以查看有关如何定义字段的其他示例。如果您想深入挖掘,请查看GraphQL::Define::InstanceDefinable,它可以帮助您了解如何在 Field 和 graphql-ruby gem 中的其他类中使用此模式。

      见:

      http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Field http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Define/InstanceDefinable

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-30
        • 2019-02-05
        • 2020-06-25
        • 2017-04-17
        • 2022-08-19
        • 1970-01-01
        • 2021-11-27
        • 2019-08-07
        相关资源
        最近更新 更多