Express中间件函数内调用其他中间件函数
在Express里面我们经常这么设置中间件:
router.post(middleware1, middleware2, middleware3)
现在我想把中间件合并为一个中间件,并添加一些处理逻辑,如:
var auth = function(req, res, next) {
if (req.body.username && req.body.password) {
// 依次调用middleware1, middileware3
}
if(req.body.access_token) {
// 依次调用middleware2, middileware3
}
}
请问这个调用怎么写?
8 回复
昨天现场已经回复了
require('./middleware2')(req, res, next)
类似这样的写法即可
@i5ting 我现在是这样实现的:
middleware1(req, res, function() {
middleware3(req, res, next)
})
感觉是hack,比如middleware1中出现next(err)的时候程序就会崩
请问前辈 这个问题后面是怎么解决的
const compose = require(‘compose-middleware’).compose const fn = compose([ middleware1, middleware2, … ])
koa-compose 的 express 版
@magicdawn 你赢了,哈哈
@i5ting 😂
直接调用next()不要带参数,表示当前的中间件已经处理完了,转移到下一个中间件处理(如果要传递数据应该通过res.locals)