【发布时间】:2022-01-16 07:03:10
【问题描述】:
我正在编写一个 Koa Web 服务器,并且想知道是否可以向 Koa.app 对象上已定义的方法添加另一个参数。
const mongoState = await connectToDatabase();
app.use(async (ctx, next) => {
ctx.state.mongoState = mongoState;
await next();
});
所以在这种情况下,mongoState 是我在 app.use(() => {}) 闭包中分配给 ctx.state.mongoState 对象的局部变量。
但我想在其他地方编写中间件逻辑并在 app.use() 中调用它,例如:app.use(dbInjector) 或其他东西。问题是我需要将该 mongoState 局部变量传递给 app.use() 中的闭包。但是我不能定义一个函数,它接受更多参数然后(ctx, next) 为app.use()
我是这样想的:
app.use(dbInjector(mongoState));
`in a different file`
export const dbInjector = async (ctx, next, mongoState) => ...etc... {}
但这显然行不通。 Koa 的 app.use() 只会自动注入 ctx 和 next,但我正在尝试添加另一个参数。
另外我不知道这种情况的正确术语,app.use() 方法只会自动将两个 ctx, next 参数传递给 .use() 内部的函数,我不确定它是如何工作的,或者那叫什么?
【问题讨论】:
标签: node.js typescript express koa