반응형
기능을 다 구현해서 routes들을 따로 빼서 파일을 정리했음
const express = require("express");
const router = express.Router();
const Blog = require("../models/blog");
router.get("/about", (req, res) => {
res.render("about", { title: "About" });
});
// blog routes
router.get("/", (req, res) => {
Blog.find()
.sort({ createdAt: -1 })
.then((result) => {
res.render("index", { title: "All Blogs", blogs: result });
})
.catch((err) => consol.elog(err));
});
router.post("/", (req, res) => {
const blog = new Blog(req.body);
blog
.save()
.then((result) => {
res.redirect("/blogs");
})
.catch((err) => {
console.log(err);
});
});
router.get("/create", (req, res) => {
res.render("create", { title: "Create a new blog" });
});
router.get("/:id", (req, res) => {
const id = req.params.id;
Blog.findById(id)
.then((result) => {
res.render("partials/details", { blog: result, title: "Blog Details" });
})
.catch((err) => {
console.log(err);
});
});
router.delete("/:id", (req, res) => {
const id = req.params.id;
Blog.findByIdAndDelete(id)
.then((result) => {
res.json({ redirect: "/blogs" });
})
.catch((err) => {
console.log(err);
});
});
module.exports = router;
blogController.js
const Blog = require("../models/blog");
// blog_index, blog_details, blog_create_get, blog_create_post, blog_delete
const blog_index = (req, res) => {
Blog.find()
.sort({ createdAt: -1 })
.then((result) => {
res.render("blogs/index", { title: "All Blogs", blogs: result });
})
.catch((err) => console.log(err));
};
const blog_details = (req, res) => {
const id = req.params.id;
Blog.findById(id)
.then((result) => {
res.render("blogs/details", { blog: result, title: "Blog Details" });
})
.catch((err) => {
res.status(404).render("404", { title: "Blog not found" });
console.log(err);
});
};
const blog_create_get = (req, res) => {
res.render("blogs/create", { title: "Create a new blog" });
};
const blog_create_post = (req, res) => {
const blog = new Blog(req.body);
blog
.save()
.then((result) => {
res.redirect("/blogs");
})
.catch((err) => {
console.log(err);
});
};
const blog_delete = (req, res) => {
const id = req.params.id;
Blog.findByIdAndDelete(id)
.then((result) => {
res.json({ redirect: "/blogs" });
})
.catch((err) => {
console.log(err);
});
};
module.exports = {
blog_index,
blog_details,
blog_create_get,
blog_create_post,
blog_delete,
};
blogRoutes.js
const express = require("express");
const blogController = require("../controllers/blogController");
const router = express.Router();
// blog routes
router.get("/", blogController.blog_index);
router.get("/about", (req, res) => {
res.render("blogs/about", { title: "About" });
});
router.post("/", blogController.blog_create_post);
router.get("/create", blogController.blog_create_get);
router.get("/:id", blogController.blog_details);
router.delete("/:id", blogController.blog_delete);
module.exports = router;
반응형
'Node.js' 카테고리의 다른 글
[Node.js] 1. Course Structure and Projects (0) | 2024.02.03 |
---|---|
Node.js Crash Course Tutorial #10 - Get, Post & Delete Requests (0) | 2023.10.03 |
Node.js Crash Course Tutorial #9 - MongoDB (0) | 2023.10.02 |
Node.js Crash Course Tutorial #8 - Middleware (0) | 2023.09.30 |
Node.js Crash Course Tutorial #7 - View Engines (0) | 2023.09.30 |