4

所以我试图查询数据库中的单个用户,但最终得到:

"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
4

2 回答 2

7

您可以使用以下内容创建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
  }
}

于 2019-04-14T13:49:00.367 回答
0

而不是 !types[Types::UserType] 在 query_type 文件到字段 :userSingle 做类型 Types::UserType 参数解析 .. end

于 2018-08-03T19:24:30.900 回答