๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[E-Commerce App with REST API] (16) blog๋ product ์นดํ ๊ณ ๋ฆฌ ๊ตฌ๋ถํด์ฃผ๊ธฐ.. ๋ชจ๋ ํ์ผ๋ช ๋์ฒด.. ๋ณธ๋ฌธ
๐ฉ๐ป ๋ฐฑ์๋(Back-End)/Node js
[E-Commerce App with REST API] (16) blog๋ product ์นดํ ๊ณ ๋ฆฌ ๊ตฌ๋ถํด์ฃผ๊ธฐ.. ๋ชจ๋ ํ์ผ๋ช ๋์ฒด..
์ง์ง์ํ์นด 2023. 3. 31. 01:53728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ Developers Corner ์ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> Node.js E-Commerce App with REST API: Let's Build a Real-Life Example!
๐ท prodCategory & blogCategory ํ์ผ๋ช ๋ฐ๊พธ๊ธฐ
๐ท ์ฝ๋
โ controllers/prodCategoryCtrl.js
const prodCategorySchema = require("../models/ProdCategory");
const asyncHandler = require("express-async-handler");
const { validateMongodbID } = require("../utils/validateMongodbID");
// ์นดํ
๊ณ ๋ฆฌ ์์ฑํ๊ธฐ
const createCategory = asyncHandler(async (req, res) => {
try {
const newCategory = await prodCategorySchema.create(req.body);
res.json(newCategory);
}
catch (error) {
throw new Error(error);
}
});
// ์นดํ
๊ณ ๋ฆฌ ์์ ํ๊ธฐ
const updateCategory = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const updateCategory = await prodCategorySchema.findByIdAndUpdate(id, req.body, {
new: true,
});
res.json(updateCategory);
}
catch (error) {
throw new Error(error);
}
});
// ์นดํ
๊ณ ๋ฆฌ ์ญ์ ํ๊ธฐ
const deleteCategory = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const deleteCategory = await prodCategorySchema.findByIdAndDelete(id);
res.json(deleteCategory);
}
catch (error) {
throw new Error(error);
}
});
// ์นดํ
๊ณ ๋ฆฌ ์กฐํํ๊ธฐ
const getaCategory = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const getaCategory = await prodCategorySchema.findById(id);
res.json(getaCategory);
}
catch (error) {
throw new Error(error);
}
});
// ๋ชจ๋ ์นดํ
๊ณ ๋ฆฌ ์กฐํํ๊ธฐ
const getallCategory = asyncHandler(async (req, res) => {
try {
const getallCategory = await prodCategorySchema.find();
res.json(getallCategory);
}
catch (error) {
throw new Error(error);
}
});
module.exports = {
createCategory,
updateCategory,
deleteCategory,
getaCategory,
getallCategory,
}
โ controllers/blogCategoryCtrl.js
const blogCategorySchema = require("../models/BlogCategory");
const asyncHandler = require("express-async-handler");
const { validateMongodbID } = require("../utils/validateMongodbID");
// ๋ธ๋ก๊ทธ ์์ฑํ๊ธฐ
const createCategory = asyncHandler(async (req, res) => {
try {
const newCategory = await blogCategorySchema.create(req.body);
res.json(newCategory);
}
catch (error) {
throw new Error(error);
}
});
// ๋ธ๋ก๊ทธ ์์ ํ๊ธฐ
const updateCategory = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const updateCategory = await blogCategorySchema.findByIdAndUpdate(id, req.body, {
new: true,
});
res.json(updateCategory);
}
catch (error) {
throw new Error(error);
}
});
// ๋ธ๋ก๊ทธ ์ญ์ ํ๊ธฐ
const deleteCategory = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const deleteCategory = await blogCategorySchema.findByIdAndDelete(id);
res.json(deleteCategory);
}
catch (error) {
throw new Error(error);
}
});
// ๋ธ๋ก๊ทธ ์กฐํํ๊ธฐ
const getaCategory = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const getaCategory = await blogCategorySchema.findById(id);
res.json(getaCategory);
}
catch (error) {
throw new Error(error);
}
});
// ๋ชจ๋ ๋ธ๋ก๊ทธ ์กฐํํ๊ธฐ
const getallCategory = asyncHandler(async (req, res) => {
try {
const getallCategory = await blogCategorySchema.find();
res.json(getallCategory);
}
catch (error) {
throw new Error(error);
}
});
module.exports = {
createCategory,
updateCategory,
deleteCategory,
getaCategory,
getallCategory,
}
โ routes/prodCategoryRoute.js
const express = require("express");
const { createCategory, updateCategory, deleteCategory, getaCategory, getallCategory } = require("../controllers/prodCategoryCtrl");
const { authMiddleware, isAdmin } = require("../middlewares/authMiddleware");
const router = express.Router();
router.post("/", authMiddleware, isAdmin, createCategory);
router.put("/:id", authMiddleware, isAdmin, updateCategory);
router.delete("/:id", authMiddleware, isAdmin, deleteCategory);
router.get("/:id", getaCategory);
router.get("/", getallCategory);
module.exports = router;
โ routes/blogCategoryRoute.js
const express = require("express");
const { createCategory, updateCategory, deleteCategory, getaCategory, getallCategory } = require("../controllers/blogCategoryCtrl");
const { authMiddleware, isAdmin } = require("../middlewares/authMiddleware");
const router = express.Router();
router.post("/", authMiddleware, isAdmin, createCategory);
router.put("/:id", authMiddleware, isAdmin, updateCategory);
router.delete("/:id", authMiddleware, isAdmin, deleteCategory);
router.get("/:id", getaCategory);
router.get("/", getallCategory);
module.exports = router;
โ models/ProdCategory.js
const mongoose = require("mongoose");
const prodCategorySchema = new mongoose.Schema({
title: {
type: String,
required: true,
unique: true,
index: true
},
}, {
timestamps: true,
collection: 'prodCategory'
});
const prodCategory = mongoose.model("prodCategory", prodCategorySchema);
module.exports = prodCategory;
โ models/BlogCategory.js
const mongoose = require("mongoose");
const blogCategorySchema = new mongoose.Schema({
title: {
type: String,
required: true,
unique: true,
index: true
},
}, {
timestamps: true,
collection: 'blogCategory'
});
const blogCategory = mongoose.model("blogCategory", blogCategorySchema);
module.exports = blogCategory;
โ index.js
const express = require("express");
const bodyParser = require("body-parser");
const dbConnect = require("./config/dbConnect");
const {notFound, errorHandler} = require("./middlewares/errorHandler");
const app = express();
require("dotenv").config();
const PORT = process.env.PORT || 8000;
const authRouter = require("./routes/authRoute");
const productRouter = require("./routes/productRoute");
const blogRouter = require("./routes/blogRoute");
const prodCategoryRouter = require("./routes/prodCategoryRoute");
const blogCategoryRouter = require("./routes/blogCategoryRoute");
const cookieParser = require("cookie-parser");
// mongoDB
dbConnect();
// Bodyparser
// express์๋ฒ๋ก POST์์ฒญ์ ํ ๋ inputํ๊ทธ์ value๋ฅผ ์ ๋ฌ
// URL-encoded ํ์์ ๋ฌธ์์ด๋ก ๋์ด์ค๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ก์ ๋ณํ ํ์
app.use(bodyParser.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use("/api/user", authRouter);
app.use("/api/product", productRouter);
app.use("/api/blog", blogRouter);
app.use("/api/prodCategory", prodCategoryRouter);
app.use("/api/blogCategory", blogCategoryRouter);
app.use(notFound);
app.use(errorHandler);
app.use("/", (req, res) => {
res.send("hihi");
})
app.listen(PORT, () => {
console.log(`๐ Server started on port http://localhost:${PORT}`);
});
728x90
๋ฐ์ํ
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Node js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments