我创建了一些带有一些逻辑的标准中间件,根据逻辑我需要调用一些 3rd 方中间件。
中间件是使用 app.use() 添加的,这是我添加自定义中间件的地方。
一旦进入我的中间件,我就无法再访问 app.use(),我该如何调用中间件?
这是一些代码:
有任何想法吗 ?
const customerData = (req, res, next) => {
try {
console.log('Started');
if (process.env.STORE_CUSTOMER_DATA === 'true') {
// Here is some custom middleware that doesn't belong to me
//
// Returns a function (I confirmed it) ready to be called with res,req, next
//
let externalMiddlware = logger({
custom:true
});
// Do I return it ? Call it ? Trying everything and nothing seems to work
externalMiddlware(req,res,next); // ???
} else {
// DO not call external middleware, will break out of if and then call next()
}
console.log('Finished');
next();
} catch (err) {
next(err);
}
};
module.exports = customerData;
我认为这应该可行,但如果您将回调委托给其他外部中间件,则不应在 customerData 中调用 next() 使用第三个中间件
所以你有没有尝试
const customerData = (req, res, next) => {
try {
console.log('Started');
if (process.env.STORE_CUSTOMER_DATA === 'true') {
let externalMiddlware = logger({
custom:true
});
return externalMiddlware(req,res,next);
} else {
return next(); // <= next moved
}
} catch (err) {
next(err);
}
};
module.exports = customerData;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句