说我有一条路线:

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/

10-09 04:07