在一次请求上下文中,对mongodb数据库进行操作,此时会触发数据库的middleware函数,并且需要使用ctx 1 无法直接获取ctx 2 因为和当前请求相关,也无法使用匿名ctx 3 也无法向middleware函数传递ctx参数 这种场景应该如何获取当前ctx呢?
Q
[eggjs/egg]mongoose的hook或者叫middleware中,如何获取当前ctx?
1
A
回答
2
给一个例子,提供一个复现 github repo?我给你改改。
6
现在不是遇到了bug,是在寻求一个解决方案 比如egg-mongoose 在egg初始化时,注册了一个middleware schema.post('find', { document: false, query: true }, async function(docs, next) { //middleware 代码 //代码这里需要使用当前请求的ctx,如何去拿到这个ctx });
3
如果你是使用 egg v3,那么可以通过 app.currentContext 拿到当前的 ctx
0
3
哦,这个强,我看看,是全新版本?
5
@shuangguo3 是的,今天刚写了一篇介绍 https://www.yuque.com/egg/nodejs/dsoek3ivlhfh3bob
3
强烈支持
3
@fengmk2 egg v3 如何升级呢?
6
升级测试了,app.currentContext确实可以拿到当前ctx, 但是mongoose hook里还是无法拿到,可能是因为mongoose hook和ctx的调用不是在同一个调用栈的原因, 自己解决了,通过覆盖插件的ctx.mode,使用闭包封装ctx,可以拿到