在GraphQL / Rails中如何在query_type中传递参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在GraphQL / Rails中如何在query_type中传递参数?相关的知识,希望对你有一定的参考价值。
所以我试图查询数据库中的单个用户,但最终得到:
"Field 'userSingle' doesn't accept argument 'first_name'"
当我运行以下查询时,我在GraphiQL中得到它:
query GetSingleUser {
userSingle(first_name: "Test"){
first_name
last_name
}
}
在我的query_type.rb中,我有以下内容:
field :userSingle, !types[Types::UserType] do
resolve -> (obj, args, ctx) {
argument :first_name, !types.String
argument :id, types.ID
User.find(id: args[:id])}
end
原来我有:
field :userSingle, !types[Types::UserType] do
resolve -> (obj, args, ctx) {User.find(id: args[:id])}
end
同样的问题。如果我拿出id:同样的问题。同样的问题:
field :userSingle, !types[Types::UserType] do
resolve -> (obj, args, ctx) {
argument :first_name, !types.String
argument :id, types.ID
user = User.find_by(
id: args[:id],
first_name: args[:first_name])
}
end
答案
而不是!在query_type文件中的类型[Types :: UserType]到字段:userSingle do type types :: UserType argument resolve .. end
另一答案
您可以使用以下命令创建user_type.rb
文件:
class Types::UserType < Types::BaseObject
description "A user object"
field :id, Integer, null: false
field :first_name, String, null: false
end
然后在query_type.rb
文件中有以下内容:
module Types
class QueryType < Types::BaseObject
...
# User query
field :user, UserType, null: true do
description "Find a user by first_name"
argument :first_name, String, required: true
end
def user(first_name:)
User.find_by(first_name: first_name)
end
end
end
完成所有这些后,查询应该如下所示:
{
user(first_name: "name") {
id
firstName: first_name
}
}
以上是关于在GraphQL / Rails中如何在query_type中传递参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .graphql 文件中编写 GraphQl Upsert Query
如何在 Rails 中设置 GraphQL Relay API
如何在 router.query 之后运行 GraphQL 查询?
如何在调用 Apollo Graphql Query 之前等待服务器响应?