如何在Node.JS中向自定义函数添加响应对象

use*_*411 17 javascript node.js express

在我的API应用程序中,我对不同部分的错误有一个固定的响应.正如您所看到的那样res.status(400).json({"error": "Invalid input"}),实际上在不同的文件和模块中重复了很多.

我可以创建模块函数invalidInput(res),这将消除重复,但我真的希望这是res对象的全局部分,如res.invalidInput().

我怎么能在JS/Node.JS中创建它?

router.get("/users", function(req, res) {
    // ...
    if (error) {
        return res.status(400).json({"error": "Invalid input"});
    }
});

router.get("/items", function(req, res) {
    // ...
    if (error) {
        return res.status(400).json({"error": "Invalid input"});
    }
});

// etc
Run Code Online (Sandbox Code Playgroud)

saa*_*adq 17

您可以使用自己的自定义中间件.将此添加到路由处理程序上方的某处:

router.use(function(req, res, next) {
    res.invalidInput = function() {
        return res.status(400).json({"error": "Invalid input"});
    };
    next();
});
Run Code Online (Sandbox Code Playgroud)

然后你可以res.invalidInput()在路由处理程序中执行.