๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[E-Commerce App with REST API] (11) Blog ์์ฑํ๊ธฐ (POST) & Blog ์์ ํ๊ธฐ (PUT) ๋ณธ๋ฌธ
๐ฉ๐ป ๋ฐฑ์๋(Back-End)/Node js
[E-Commerce App with REST API] (11) Blog ์์ฑํ๊ธฐ (POST) & Blog ์์ ํ๊ธฐ (PUT)
์ง์ง์ํ์นด 2023. 3. 29. 23:54728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ Developers Corner ์ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> Node.js E-Commerce App with REST API: Let's Build a Real-Life Example!
๐ท Blog ์์ฑํ๊ธฐ
์์ฑํ๊ธฐ ์ ์, ๋ก๊ทธ์ธ๋ถํฐ ์ค์ (role์ด "admin" ์ด์ด์ผํจ)
๋ก๊ทธ์ธ ํ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ blog create ์ ๋ฃ๊ธฐ
๋๋ณด๊ธฐ

๐ ๋ชฐ๋ผ๋ ๋๊ตฌ ์์๋ ๋๊ณ ~
1) postman์ Environment (์ผ์ชฝ ๋จ) ๋ค์ด๊ฐ๊ธฐ
2) New environment ๋๋ฌ์ ์ฃผ์ ์์ฑํ๊ธฐ
3) ์ ์๋จ์ No Envrironment ์์ New environment ๋ก ๋ฐ๊พธ๊ธฐ
4) ์์ผ๋ก ๊ท์ฐฎ๊ฒ ๊ธด API ์ฌ์ฉ์ํ๊ณ ํจ์ถ๋ {{Variable}} ์์ฑํ๋ฉด ๋จ

๐ท Blog ์์ ํ๊ธฐ
update ํ๊ฑฐ์ฃต~
๐ท์ฝ๋
โ models/Blogs
const mongoose = require("mongoose");
const BlogSchema = new mongoose.Schema({
title: {
type: String,
required: true,
},
description: {
type: String,
required: true,
},
category: {
type: String,
required: true,
},
numViews: {
type: Number,
default: 0,
},
isLiked: {
type: Boolean,
required: false,
},
isDisliked: {
type: Boolean,
required: false,
},
likes: [{
type: mongoose.Schema.Types.ObjectId,
ref: "User",
}],
dislikes: [{
type: mongoose.Schema.Types.ObjectId,
ref: "User",
}],
image: {
type: String,
default:
"https://tistory1.daumcdn.net/tistory/5027112/attach/f5df7133efd24c339e40102b168855b0"
},
author: {
type: String,
default: "Admin",
}
}, {
toJSON: {
virtuals: true,
},
toObject: {
virtuals: true,
},
timestamps: true,
collection: 'blog'
});
const Blog = mongoose.model("Blog", BlogSchema);
module.exports = Blog;
โ routes/blogRoute.js
const express = require("express");
const { createBlog, updateBlog } = require("../controllers/blogCtrl");
const { authMiddleware, isAdmin } = require("../middlewares/authMiddleware");
const router = express.Router();
router.post("/", authMiddleware, isAdmin, createBlog);
router.put("/:id", updateBlog);
module.exports = router;
โ controllers/blogCtrl.js
const Blog = require("../models/Blogs");
const User = require("../models/User");
const asyncHandler = require("express-async-handler");
const { validateMongodbID } = require("../utils/validateMongodbID");
// ๋ธ๋ก๊ทธ ์์ฑํ๊ธฐ
const createBlog = asyncHandler(async (req, res) => {
try {
const newBlog = await Blog.create(req.body);
res.json(newBlog);
}
catch (error) {
throw new Error(error);
}
});
// ๋ธ๋ก๊ทธ ์์ ํ๊ธฐ
const updateBlog = asyncHandler(async (req, res) => {
const { id } = req.params;
validateMongodbID(id);
try {
const updateBlog = await Blog.findByIdAndUpdate(id, req.body);
res.json(updateBlog);
}
catch (error) {
throw new Error(error);
}
});
module.exports = {
createBlog,
updateBlog,
}
โ index.js
blog ๋ผ์ฐํฐ ์ถ๊ฐ~
const blogRouter = require("./routes/blogRoute");
728x90
๋ฐ์ํ
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Node js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments