如何在控制器方法中注入请求级上下文

时间:2019-02-24 16:41:36

标签: loopbackjs v4l2loopback

在Loopback4中,如何访问任何控制器和存储库中的请求级上下文(请求级上下文已在sequence.ts文件中提供)

sequence.ts

async handle(context: RequestContext) {
  try {
    const { request, response } = context; //TODO: How to access this context in controllers
    const route = this.findRoute(request);
    const args = await this.parseParams(request, route);
    const result = await this.invoke(route, args);
    this.send(response, result);
  } catch (err) {
    this.reject(context, err);
  }
}

在try块的第一行“ const {request,response} = context;”中,要访问我的控制器和存储库中的此上下文变量。

通常在旧版Loopback2 / 3中,我通过以下步骤访问请求级上下文:

let LoopBackContext = require('loopback-context');
let ctx = LoopBackContext.getCurrentContext();
ctx.set('inTime', +new Date());
console.log(ctx.get('inTime'));

如果可以通过Loopback4访问每个请求上下文,请帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

最后得到了解决方案。在控制器/存储库构造函数中,按如下所示插入上下文,

constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {

}
meth() {
   console.log(this.req);
}