Как добавить пользовательскую функцию в объект ответа в Node.JS

В моем 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

Ответы

Ответ 1

Вы можете использовать свое собственное промежуточное программное обеспечение. Добавьте это где-то выше вашего обработчика маршрута:

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

а затем вы можете сделать res.invalidInput() в ваших обработчиках маршрутов.