如何累积单个请求的解析调用?
How to accumulate resolve calls for a single request?
当 graphql request
访问我的服务器时,它根据查询跳转到几个不同的 resolve functions
。
但是我不想有时用几十个小请求来访问我的数据库(基本上每个 resolve
函数中有一个 select
)。这不会很好地扩展。
有没有一种方法可以为单个 graphql 请求累积所有这些解析调用 - 这样最后我就可以做一些魔术并只为我的数据库构建一个 select
然后解析所有承诺?
我可以通过累积我在解析函数中 return 的所有承诺,看到一些自己构建东西的方法,但我不知道何时调用了单个请求的所有解析函数。
这个问题有解决办法吗? Facebook 如何处理这种情况?
谢谢
将所有解析调用分批处理到单个 数据库查询中是 GraphQL 实现的一个活跃探索领域,参考实现不支持。相反,我们建议使用 dataloader。使用 dataloader
可以帮助确保您从存储层获取每条记录一次,即使它被多次查询。
当 graphql request
访问我的服务器时,它根据查询跳转到几个不同的 resolve functions
。
但是我不想有时用几十个小请求来访问我的数据库(基本上每个 resolve
函数中有一个 select
)。这不会很好地扩展。
有没有一种方法可以为单个 graphql 请求累积所有这些解析调用 - 这样最后我就可以做一些魔术并只为我的数据库构建一个 select
然后解析所有承诺?
我可以通过累积我在解析函数中 return 的所有承诺,看到一些自己构建东西的方法,但我不知道何时调用了单个请求的所有解析函数。
这个问题有解决办法吗? Facebook 如何处理这种情况?
谢谢
将所有解析调用分批处理到单个 数据库查询中是 GraphQL 实现的一个活跃探索领域,参考实现不支持。相反,我们建议使用 dataloader。使用 dataloader
可以帮助确保您从存储层获取每条记录一次,即使它被多次查询。