graphql - 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 })
...
解决方案
推荐阅读
- node.js - 如何使用firebase函数返回保存在firebase存储中的文件的json内容
- git - git fetch:如何查看每个分支的下载数据
- r - 过滤在 r 中事件“A”的时间范围内发生的事件
- javascript - 有没有办法在输入之前修改搜索菜单以隐藏菜单?
- laravel - 在 Laravel 中,我应该将模型的实用程序放在哪里?
- javascript - 有没有办法发出 API 请求,并且在发出请求之前只获取满足特定条件的数据?
- ios - MKUserTrackingButton 仅在长按时响应
- jsf - JSF 2.3 MetaTagHandler 未处理类型 com.sun.faces.cdi.CdiValidator 错误
- laravel - 使用 Event::fake() 或 Queue::fake() 时通知测试失败
- bootstrap-4 - 文本和图像与引导程序并排