【问题标题】:dataloader facebook optimization数据加载器 facebook 优化
【发布时间】:2019-01-24 09:28:14
【问题描述】:

大家! 我正在尝试在我的 graphql 项目中使用 Facebook 的 Dataloader。 所以,现在我面临下一个问题。当我通过 id 向我的数据库询问数据时,例如:select * from books where books.author in (4,5,6,7) 我得到一个错误:“函数没有返回一个长度相同的数组的承诺键数组”。因为 id 4 我可以拿到更多的书,而不仅仅是一本书。 有人知道怎么解决吗?

【问题讨论】:

  • 能否将结果合并到一个对象中?也许也有相关的钥匙?

标签: graphql express-graphql


【解决方案1】:

Dataloader 期望您返回一个与加载程序的输入长度相同的数组。所以,如果loader 得到[4,5,6,7] 作为输入,它需要返回一个长度为4 的数组。还要记住,从加载器返回的结果需要与输入 ID 的顺序相同。根据从数据库返回数据的方式,您可能需要担心,也可能不需要担心。

【讨论】:

  • 这是关键。如果数据加载器以[4,6,5,7] 的顺序获取 id,则必须遍历结果并按 4、5、6、7 的顺序创建数组。如果仅按 id 对它们进行分组,并且您不以相同的顺序返回它们,您的缓存将被破坏
【解决方案2】:

您应该为每个 id 返回一个数组 - 数组数组。您必须将 sql 结果 - 具有重复项的平面列表转换为保留输入 ID(数量和顺序)的“分组”记录数组。

【讨论】:

  • 这似乎是真的。我会试试的。
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多