Node.js Blog System
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

45 lines
1.3 KiB

  1. const express = require("express");
  2. const router = express.Router();
  3. const Article = require("../models/article");
  4. const article = require("../models/article");
  5. const { findByIdAndDelete } = require("../models/article");
  6. const config = require("../config");
  7. pass = config.users.pass;
  8. router.get("/new", (req, res) => {
  9. res.render("articles/new", { article: new Article() });
  10. });
  11. router.get("/:slug", async (req, res) => {
  12. const article = await Article.findOne({ slug: req.params.slug });
  13. if (article == null) res.redirect("/");
  14. res.render("articles/show", { article: article });
  15. });
  16. router.post("/", async (req, res) => {
  17. let article = new Article({
  18. title: req.body.title,
  19. description: req.body.description,
  20. markdown: req.body.markdown,
  21. });
  22. if (req.body.password == pass) {
  23. try {
  24. article = await article.save();
  25. res.redirect("/articles/" + article.slug);
  26. } catch (e) {
  27. console.log(e);
  28. res.render("articles/new", { article: article });
  29. }
  30. }
  31. else {
  32. res.render("articles/new", { article: article });
  33. }
  34. });
  35. router.delete("/:id", async (req, res) => {
  36. await Article.findByIdAndDelete(req.params.id);
  37. res.redirect("/");
  38. });
  39. module.exports = router;