首页 > 解决方案 > GraphQL Playground 不断强制服务器的上下文函数运行?

问题描述

似乎每次我登录到 GraphQL 游乐场时,上下文功能都会连续运行,直到游乐场选项卡关闭。

我正在尝试做的事情:
如果用户在发出请求时传递了令牌,则将用户的信息作为me上下文中的对象传递。
我能够让它工作,但我担心它无法扩展,因为当我打开操场时,上下文功能似乎每秒左右运行一次,User.findByPk()一遍又一遍地退出该行:

Executing (default): SELECT "id", "email", "password", "createdAt", "updatedAt" FROM "users" AS "user" WHERE "user"."id" = 2;

当消费者最终使用 Apollo Client 使用 API 时,我是否应该担心这一点?

堆栈:graphql-yoga, sequelize,postgres

这是我的代码示例:

...
export const getUser = async (authorization, User) => {
  const token = authorization.replace('Bearer ', '')
  try {
    const { id, email } = jwt.verify(token, process.env.JWT_SECRET_KEY)
    const user = await User.findByPk(id)
    if (!user) return null
    return { id, email }
  } catch (error) {
    return null
  }
}

const context = async ({ request, response }) => {
  const {
    headers: { authorization },
  } = request

  if (authorization) {
    return { models, me: await getUser(authorization, models.User) }
  }

  return { models }
}

const server = new GraphQLServer({ schema, context })
...

标签: graphql

解决方案


推荐阅读