如何使用 GraphQL 获取所有用户模型
How to get all user model with GraphQL
我已经为此苦苦挣扎了一个多小时,但似乎无法让它发挥作用。
我正在将 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
}
经过反复试验,我设法解决了以下问题:
field :users, types[IndexUserType] do
resolve -> (obj, args, ctx) {
User.all
}
end
在您原来的解决方案中,您在块中定义了字段的属性,当您这样做时,您需要通过以下方式声明类型:
field :users do
type types[IndexUserType] # <-- Note the addition of 'type'
...
end
您的第二个解决方案将参数列表中的相同信息传递给 'field',这也有效。这是通过 InstanceDefinable
mixin 支持的。您可能想查看 GraphQL::Field
的文档以查看有关如何定义字段的其他示例。如果您想更深入地挖掘,请查看 GraphQL::Define::InstanceDefinable
,它可以帮助您了解如何在 Field 和 graphql-ruby [=25= 中的其他 类 中使用此模式].
参见:
http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Field
http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Define/InstanceDefinable
我已经为此苦苦挣扎了一个多小时,但似乎无法让它发挥作用。
我正在将 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
}
经过反复试验,我设法解决了以下问题:
field :users, types[IndexUserType] do
resolve -> (obj, args, ctx) {
User.all
}
end
在您原来的解决方案中,您在块中定义了字段的属性,当您这样做时,您需要通过以下方式声明类型:
field :users do
type types[IndexUserType] # <-- Note the addition of 'type'
...
end
您的第二个解决方案将参数列表中的相同信息传递给 'field',这也有效。这是通过 InstanceDefinable
mixin 支持的。您可能想查看 GraphQL::Field
的文档以查看有关如何定义字段的其他示例。如果您想更深入地挖掘,请查看 GraphQL::Define::InstanceDefinable
,它可以帮助您了解如何在 Field 和 graphql-ruby [=25= 中的其他 类 中使用此模式].
参见:
http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Field http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Define/InstanceDefinable