说我有路线:
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();
});
我想这样做的原因是因为我有很多具有类似请求条件和响应的路由,并且想要开始重构它。所以,如果我这样做,它的工作方式是否相同?
答案 0 :(得分:2)
是的,你可以这样做。但是你这样做:
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);