Apollo Server - 通过中间件只查询一次用户

问题描述

当前端向 graphQL 服务器(Apollo Server)发出 API 请求时,我意识到我经常调用一个函数utils.getUser() 太多次。这个函数一个命中数据库SQL查询

这个函数在同一个请求中被多次调用

  • 第一次在指令中检查发出请求的用户的角色。
  • 在解析器中。 (例如写日志)
  • 在子解析器中。 (例如,根据用户的角色返回特定字段)

理想情况下,我们应该在中间件中调用 utils.getUser() 并更新上下文 ctx,因为上下文被转发到所有解析器。

代替:

createReview: async (parent,args,ctx,info) => {
  const user = await utils.getUser(ctx) // Request sql to get the User data
  ...
}

拥有

createReview: async (parent,info) => {
  const user = ctx.user
  ...
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)