javascript - 手动链接 Express 中间件

标签 javascript node.js express

我目前使用 2 个中间件:

Express-jwt它从请求中提取/验证 JsonWebToken,我自己的中间件检查 JWT 是否包含特定信息(权限)。

我想有条件地一起使用这些中间件(基于路由上是否有特定的 swagger 属性)。

我想做这样的事情:

let expressjwt = function(req, res, next) { ... };
let jwtValidator = function(req, res, next) { ... };

app.use((res, req, next) => {
    if(req.swagger.someAttribute) {
        expressjwt(req, res, jwtValidator(req, res, next));
        // The issue here is that jwtValidator will get called even if 
        // expressjwt produces an error
    } else {
        next();
    }
});

最佳答案

听起来问题是 - “只有当服务 A 成功时,您如何有条件地调用服务 B。”

这是 promises 的主要目标之一 - 它允许您将异步调用链接在一起并让它们有条件地“解决”。如果需要,我可以发布代码示例。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

关于javascript - 手动链接 Express 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158298/

相关文章:

javascript - 为什么我的翻译动画不起作用?

node.js - vscode 通过扩展提供到 json 模式的链接

javascript - 使用 Node.js 执行 Python 脚本

node.js - Nodejs : Mongoose find latest entry of the DB with filter

javascript - 如何为类的属性赋予 req.body 值?

javascript - Angular JS 2.0 将 typescript 编译为 javascript

javascript - 使用 switch 语句在 javascript 中更改时间时显示不同的消息

javascript - 根据点击事件动态改变轮播图片

具有多个构造函数的 Java 改造类与多个类

javascript - NodeJS、Express、原型(prototype)中的变量范围问题