thi*_*bus 1 ruby-on-rails graphql
我这样定义了一个 UserType:
class Types::UserType < GraphQL::Schema::Object
field :id, ID, null: false
field :username, String, null: false
field :full_name, String, null: true
end
Run Code Online (Sandbox Code Playgroud)
这些字段中的每一个都存在于 Rails 模型中,并且在 GraphQL Gem 1.8 之前的升级中,我能够在查询中使用 full_name 。
当我运行查询时:
query {
users {
username
id
full_name
}
}
Run Code Online (Sandbox Code Playgroud)
我得到:"message": "Field 'full_name' doesn't exist on type 'User'",
如果我删除full_name,我会得到我期望的数据。我以什么方式错误地处理这个问题?作为参考,我的QueryType定义为:
class Types::QueryType < GraphQL::Schema::Object
# Add root-level fields here.
# They will be entry points for queries on your schema.
field :users, [UserType, null: true], null: false do
argument :id, Integer, required: false
end
def users(**args)
args[:id]
if args[:id]
User.where(id: args[:id])
else
User.all
end
end
end
Run Code Online (Sandbox Code Playgroud)
我相信问题full_name应该出现fullName在您的查询中。在 1.8.x 中,模式中的字段会自动camalized。
作为惯例,字段和参数名称应加下划线。它们将在底层 GraphQL 类型中转换为驼峰命名法,并在架构本身中采用驼峰命名法。
-- http://graphql-ruby.org/type_definitions/objects.html
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |