首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建将修改响应体并在链中最后运行的Koa2中间件?

如何创建将修改响应体并在链中最后运行的Koa2中间件?
EN

Stack Overflow用户
提问于 2019-06-12 09:02:56
回答 1查看 702关注 0票数 2

我有一个Koa2应用程序,它在不同的路径上呈现模板。我想介绍一个中间件,它将以某种方式修改呈现的模板,我需要它成为其他中间件链中的最后一个。在使用Koa2触发响应之前,以及在不修改已经定义的路由之前,是否有任何方法强制执行最后应用的中间件?

我尝试了以下代码:

代码语言:javascript
复制
// modification middleware
app.use(async function (ctx, next) {
  await next();
  ctx.body = ctx.body.toUpperCase();
})

// template rendering
app.use(async function (ctx, next) {
  const users = [{ }, { name: 'Sue' }, { name: 'Tom' }];
  await ctx.render('content', {
    users
  });
});

app.listen(7001);

它按预期工作,但如果在modification one之前引入任何其他中间件,那么它将不是链中的最后一个中间件。

是否有可能实现被描述的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-18 23:42:24

之前想出了解决这个问题的办法。如果其他人需要做类似于问题中的事情,下面是代码:

代码语言:javascript
复制
// modification middleware
const mw = async function(ctx, next) {
  await next();
  ctx.body = ctx.body.toUpperCase();
}

app.middleware.unshift(mw);

基本上,应用程序对象的middleware成员可以从外部访问。使用标准数组方法unshift,可以强制在中间件数组中首先添加所需的中间件,这将由Koa作为链中的最后一个处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56558386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档