如何累积单个请求的解析调用?

How to accumulate resolve calls for a single request?

graphql request 访问我的服务器时,它根据查询跳转到几个不同的 resolve functions。 但是我不想有时用几十个小请求来访问我的数据库(基本上每个 resolve 函数中有一个 select)。这不会很好地扩展。

有没有一种方法可以为单个 graphql 请求累积所有这些解析调用 - 这样最后我就可以做一些魔术并只为我的数据库构建一个 select 然后解析所有承诺?

我可以通过累积我在解析函数中 return 的所有承诺,看到一些自己构建东西的方法,但我不知道何时调用了单个请求的所有解析函数。

这个问题有解决办法吗? Facebook 如何处理这种情况?

谢谢

将所有解析调用分批处理到单个 数据库查询中是 GraphQL 实现的一个活跃探索领域,参考实现不支持。相反,我们建议使用 dataloader。使用 dataloader 可以帮助确保您从存储层获取每条记录一次,即使它被多次查询。