I\'m using NodeJS with Express middleware, and my only issue is to catch the exact Sent status Code to the response (for logs) in a global function.
Using the follo
Alternatively, if you don't want to do next(new Error), you can use res.on("finish",.... Which is the last event which fires, wrapping your code in that will yield the correct statusCode
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const router = express.Router();
app.use(bodyParser.json());
router.get("/", (req, res, next) => {
//presume 404
res.send(404).send("The product cannot be found");
});
app.use((req, res, next) => {
res.on("finish", function() {
console.log(res.statusCode); // actual 404
});
console.log(res.statusCode); // 200 :/ so dont use
next();
});
app.listen();
you might want to try something like below - use the next callback to pass control to the error handler middleware:
router.get('/', ( req, res, next) => {
// ......... SOME LOGIC
// Suppose that the variable content is coming from the DB
if (content.length === 0) {
const err = new Error('The product cannot be found');
err.status = 404;
next(err);
}
res.json(content);
});
app.use((err,req, res, next) => {
console.log(err.status);
});