Graphql 数据加载器facebook优化

Graphql 数据加载器facebook优化,graphql,express-graphql,Graphql,Express Graphql,大家好! 我正试图在我的graphql项目中使用facebook的Dataloader。 所以,现在我面临下一个问题。当我通过ID向数据库请求数据时,例如:select*from books where books.author in(4,5,6,7),我得到一个错误:“函数没有返回与键数组长度相同的数组承诺”。因为到了id 4,我可以拿到比一本书更多的书。 有人知道如何修复它吗?Dataloader希望您返回一个与加载程序的输入长度相同的数组。因此,如果加载程序获取[4,5,6,7]作为输入,

大家好! 我正试图在我的graphql项目中使用facebook的Dataloader。 所以,现在我面临下一个问题。当我通过ID向数据库请求数据时,例如:select*from books where books.author in(4,5,6,7),我得到一个错误:“函数没有返回与键数组长度相同的数组承诺”。因为到了id 4,我可以拿到比一本书更多的书。
有人知道如何修复它吗?

Dataloader
希望您返回一个与加载程序的输入长度相同的数组。因此,如果
加载程序
获取
[4,5,6,7]
作为输入,它将需要返回长度为
4
的数组。还要记住,从加载程序返回的结果需要与输入ID的顺序相同。根据从数据库返回数据的方式,这可能是您需要担心的问题,也可能不是。您应该为每个id返回一个数组-数组的数组。您必须将包含重复项的sql结果平面列表转换为保留输入ID(数量和顺序)的记录的“分组”数组。

能否将结果合并到单个对象中?也许还有相关的钥匙?这似乎是真的。我会试试的,这很重要。如果数据加载器以
[4,6,5,7]
的顺序获取ID,则必须循环遍历结果,然后以4、5、6、7的顺序创建数组。如果只按id对它们进行分组,而不按相同的顺序返回它们,则缓存将被破坏