如何解决GraphQL Apollo - 用于更大响应的类型中间件
我目前正在努力实现 Apollo 的“类型权限”中间件(如果用户有权查看他在查询中定义的类型,应该只根据令牌检查),这不会导致不必要的中间件解析器调用。我发现的如何做中间件的唯一方法是使用“graphql-middleware”模块,它将中间件注入模式对象。 但是这种方法的问题是,它是根据查询解析器函数发送的结果数据来解决的。
因此,如果在此示例查询中,如果它输出 type Product
的 1000 个对象的数组,则 type Product
的中间件将被调用 1000 次。
query getAccount(where: { id: 1 }) {
products: {
id
name
price
}
}
但是如果我只想检查发送此查询的用户是否有权查看 type Product
呢?我不需要根据查询解析器的结果检查这个 1000 次。这对我们的应用程序的性能有至关重要的影响——当我们输出 600 个同样包含子对象的对象时,我们的 graphql 屏蔽中间件会为每个输出字段调用,最终导致 13k 的中间件函数调用仅针对一个请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。