gpt4 book ai didi

node.js - 如何将 Connect 中间件合并为一个中间件?

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:22 24 4
gpt4 key购买 nike

我有几个中间件,我想将它们组合成一个中间件。我该怎么做?

例如……

// I want to shorten this...
app.use(connect.urlencoded())
app.use(connect.json())

// ...into this:
app.use(combineMiddleware([connect.urlencoded, connect.json]))

// ...without doing this:
app.use(connect.urlencoded()).use(connect.json())

我希望它动态地工作——我不想依赖于我使用的哪个中间件。

我觉得除了令人困惑的 for 循环之外还有一个优雅的解决方案。

最佳答案

Express 接受 app.use 的数组如果你有路径:

var middleware = [connect.urlencoded(), connect.json()];
app.use('/', middleware)

但是,如果您想要一个通用的 combineMiddleware 函数,您可以轻松构建一个帮助程序,而无需任何额外的库。这基本上利用了 next 只是一个接受可选错误的函数这一事实:

/**
* Combine multiple middleware together.
*
* @param {Function[]} mids functions of form:
* function(req, res, next) { ... }
* @return {Function} single combined middleware
*/
function combineMiddleware(mids) {
return mids.reduce(function(a, b) {
return function(req, res, next) {
a(req, res, function(err) {
if (err) {
return next(err);
}
b(req, res, next);
});
};
});
}

关于node.js - 如何将 Connect 中间件合并为一个中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20274483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com