Passing an error from POST route to ejs template

Viewed 40

So I've been trying to figure out for hours, how to pass an error from a POST route in Express to an EJS template. I'm building a blog app and I want to prevent the redirect to the root route and instead display an error if the title input or text area are empty. Can this be done server-side or do I have to track the inputs on the client-side?

Here is my Compose template:

 <form action="/compose" method="POST">
    <div class="form-group">
      <label for="postTitle">Title</label>
      <input type="text" name="postTitle" class="form-control" id="postTitle" autocomplete="off">
      <label for="postBody">Post</label>
      <textarea name="postBody" class="form-control" autocomplete="off" rows="8"></textarea>
    </div>
      <button type="submit" name="button" class="btn btn-primary">Publish</button>
  </form>

Here's my GET and POST routes:

  compose_get: (req, res) => res.render("compose"),

  compose_post: (req, res) => {
    const postTitle = req.body.postTitle;
    const postBody = req.body.postBody;

    let postDate = new Date();

    const post = new Posts({
      date: postDate,
      title: postTitle,
      content: postBody
    });

    post.save(err => {
      if (!err) {
        res.redirect("/");
      }
    });
  }
0 Answers
Related