我想将view
和json
等方法添加到传递给我的控制器的上下文对象中。我在中间件之前执行此操作,该中间件先于其他所有内容运行:
async function(ctx, next){
ctx.view = view.bind(ctx);
ctx.json = json.bind(ctx);
await next()
ctx.renderer.render();
}
这些方法设置了中间件解释的一些传统配置对象(Renderer),然后通过设置正确的ctx.body
来呈现实际响应。这使我可以轻松切换模板语言,并且可以更轻松地组合API和模板请求。
除非它不起作用,因为在await next()
后ctx.renderer
是默认值,而不是控制器设置的值。我怀疑它是一个命名空间问题,但我不确定它来自何处。
将函数附加到可以引用上下文而不传递给它们的上下文的最佳实践是什么?
答案 0 :(得分:1)
好的是here in the docs我错过了它,文档在回购中并且没有托管,这使得它们难以导航。
TL; DR:使用app.context
访问上下文原型。添加函数会将它们附加到上下文对象,并允许您从内部使用this
来访问它。