数据加载器 facebook 优化

dataloader facebook optimization

大家好! 我正在尝试在我的 graphql 项目中使用 facebook 的 Dataloader。 所以,现在我面临下一个问题。例如,当我通过 id 向我的数据库询问数据时:select * from books where books.author in (4,5,6,7) 我得到一个错误:"function did not return a Promise of an Array of the same length as the Array of keys"。由于 id 4,我可以获取更多的书而不是一本书。 有人知道如何解决吗?

Dataloader 期望您 return 一个与加载程序的输入长度相同的数组。因此,如果 loader 得到 [4,5,6,7] 作为输入,它将需要 return 一个长度为 4 的数组。还要记住,从加载程序 return 编辑的结果需要与输入 ID 的顺序相同。这可能是也可能不是您需要担心的事情,具体取决于数据是如何从您的数据库return编辑的。

您应该 return 每个 id 的数组 - 数组数组。您必须将 sql 结果 - 带有重复项的平面列表转换为 'groupped' 保留输入 ID(数量和顺序)的记录数组。