javascript - Node 中的抽象 (req, res, next)

标签 javascript node.js

假设我有一条路线:

app.get(abc, (req, res, next) => {
    if (req.params.ID === undefined) { 
        res.status(400); 
        res.end(); 
    }
    next();
});

我想知道如果我像这样将 if 语句抽象到另一个文件中是否会同样有效:

let undefinedID = (req, res, next) => {
    if (req.params.ID === undefined) {
        res.status(400); 
        res.end();
    }
    next();
}

module.exports = {undefinedID};

然后在我的路由中调用函数:

const reqConditionals = require('path/to/fxn');

app.get(abc, () => {
    reqConditionals.undefinedID();
});

我想这样做的原因是因为我有很多具有类似请求条件和响应的路由,并且想开始重构它。那么,如果我这样做,效果会一样吗?

最佳答案

是的,你可以做到。但是你这样做:

const reqConditionals = require('path/to/fxn');

app.get(abc, reqConditionals.undefinedID);

然后您可以获得实际路线。

app.get(abc, reqConditionals.undefinedID);
app.get(abc, (req, res, next) => {
  //here you know that the id is not undefined cause the previous middleware let you reach here.
});

此外,您可以将它应用于数组或其他任何东西,并具有多种功能。

app.get([abc, def], reqConditionals.undefinedID, reqConditionals.undefinedFoo, reqConditionals.undefinedBar);

关于javascript - Node 中的抽象 (req, res, next),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158225/

相关文章:

javascript - `new Array(n)` 和 `Array(n)` 有什么区别

javascript - 从输入表单中删除 HTML 标签输入

node.js - mongoDB 中弃用错误,我应该在哪里传递参数?

node.js - 描述一下 Node.js 中的退出代码?

arrays - 从数组中删除套接字工作不正确

node.js - 我应该多久获取一次新的 twilio 服务 sid?

node.js - 从前端停止 Node 服务器中的功能

javascript - Bootstrap 不使用 jquery 动态创建的元素呈现

javascript - 在 jquery 中保存可拖动 div 的位置

javascript - algolia 搜索 - 突出显示的属性与代码段的属性