ruby-on-rails - Rails GQL 加载器返回子值
问题描述
我正在尝试将字段中的父 ID 传递到解析器加载程序,并且使用加载程序我想加载父 [ids] 的所有子代,但我可以在控制台中看到哈希,但它没有返回任何内容。
field :posts, PostGQLCoreType do
description "posts of users"
resolve ->(user, _args, _ctx) { PostLoader.load(user.id) }
end
以及我认为存在错误的加载程序代码
class PostLoader < GraphQL::Batch::Loader
def perform(ids)
posts = Post.where(user_id: ids).index_by(&:id)
ids.each { |id| fulfill(id.to_i, posts[id]) }
end
end
在控制台中我看到了这个返回,但在 gqp API 中什么也没有
[primary] User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."user_input" = 'f' /*application:app,controller:core,action:create,line:(eval):41:in `block in exec_query'*/ [["user_input", false]]
[primary] Post Load (0.3ms) SELECT "posts".* FROM "posts" WHERE "posts"."user_id" IN ('e78fe073-e2f6-44ab-83aa-957a46913bfc', 'e76bf46c-59f4-4819-8d72-6811a36ed2cc', '4399436f-2710-412b-9cc4-043b33d8b0cf', '374b2895-2fe0-4bfb-850f-36803c3461bc', '63cc613a-260a-4a06-8b7b-167ca40310b6', 'fbf196f2-dd96-43e6-b421-46f5fcbd4c2b', '0e64e251-8f79-4ce1-acef-bebb5bbce2a0', '6be9abcf-5d57-477c-9133-7771fe82ae2c', '3fdfe90b-a794-4eae-b77e-bf87c1b40151', 'cb4d82f5-d159-41d9-bba7-9525788ffd9c') /*application:app,controller:core,action:create,line:(eval):41:in `block in exec_query'*/
Completed 200 OK in 883ms (Views: 0.3ms | ActiveRecord: 36.7ms)
API 返回是
"users": [
{
"id": "e21fe073-e2f6-44ab-83aa-957a46913bfc",
"code": "customerservice",
"posts": null
},
{
"id": "a25bf46c-59f4-4819-8d72-6811a36ed2cc",
"code": "facilities",
"posts": null
},
解决方案
通过这种方法修复它
仅当父数据库中存在 @childmodel_id 名称时才会返回
posts = Post.where(user_id: ids).index_by(&:id)
如果父数据库没有@childmodel_id 并且在子数据库中有@parentmodel_id 那么我们必须采用这种方法
posts = Post.where(user_id: ids).group_by(&:user_id)
推荐阅读
- facebook-graph-api - 将facebook页面订阅到应用程序时如何解决“需要参数subscribed_fields”错误?
- python - 键盘事件未使用 pywin32 发送到窗口
- timezone - Eiffel:我如何处理时区?
- oracle - Oracle - 从主表及其历史表中的客户记录中选择
- mongodb - MongoDB v4.0.0 副本配置设置失败
- python - SQLalchemy query().filter_by(invalid_id).first() 抛出错误而不是 None
- php - 如何通过基于 2 个属性值的组合逻辑对对象数组进行排序?
- html - 选择 CSS 中没有 HTML 标签/元素
- php - 获取 SQL 列中的行
- python-3.x - 如何忽略 nan 值并计算过去 3 个月的平均值