Using RES-LOCALS

 res.locals

TO SET VARIABLES ACCESSIBLE IN TEMPLATES RENDERED WITH res.render

WE USE RES.LOCALS TO SEND FLASH MESSAGES FOR BETTER EFFICIENCY.

THE VARIABLES USED IN RES.RENDER CAN BE SAVED IN RES.LOCALS.


app.get("/register", (req, res) => {
  let { name = "anonymous" } = req.query;
  req.session.name = name;
  if (name === "anonymous") {
    req.flash("error", "registration unsuccessful");
  } else {
    req.flash("success", "registration successful");
  }
  res.redirect("/hello");
});

app.get("/hello", (req, res) => {
  res.locals.successMsg = req.flash("success");
  res.locals.errorMsg = req.flash("error");
  res.render("page.ejs", {
    name: req.session.name,
  });
});

PAGE.EJS

 <body>
    <%= successMsg %>
    <%= errorMsg %>
    <h2>Hello!<%= name %></h2>
  </body>


THEY CAN ALSO BE USED IN MIDDLEWARES.


app.use((req, res, next) => {
  res.locals.successMsg = req.flash("success");
  res.locals.errorMsg = req.flash("error");
  next();
});



Comments