😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[E-Commerce App with REST API] (17) λΈŒλžœλ“œ μƒμ„±ν•˜κΈ° (POST) & λΈŒλžœλ“œ μˆ˜μ •ν•˜κΈ° (PUT) & λΈŒλžœλ“œ μ‚­μ œν•˜κΈ° (DELETE) λ³Έλ¬Έ

μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[E-Commerce App with REST API] (17) λΈŒλžœλ“œ μƒμ„±ν•˜κΈ° (POST) & λΈŒλžœλ“œ μˆ˜μ •ν•˜κΈ° (PUT) & λΈŒλžœλ“œ μ‚­μ œν•˜κΈ° (DELETE)

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 3. 31. 11:53
728x90
λ°˜μ‘ν˜•

<λ³Έ λΈ”λ‘œκ·ΈλŠ” Developers Corner μ˜ 유튜브λ₯Ό μ°Έκ³ ν•΄μ„œ κ³΅λΆ€ν•˜λ©° μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :-)>

=> Node.js E-Commerce App with REST API: Let's Build a Real-Life Example!

 

🌷 λΈŒλžœλ“œ μƒμ„±ν•˜κΈ° (POST)

🌷 λΈŒλžœλ“œ μˆ˜μ •ν•˜κΈ° (PUT) 

 

🌷 λΈŒλžœλ“œ μ‚­μ œν•˜κΈ° (DELETE) 

 

🌷 μ½”λ“œ

βœ… controllers/brandCtrl.js

const Brand = require("../models/Brand");
const asyncHandler = require("express-async-handler");
const { validateMongodbID } = require("../utils/validateMongodbID");

// λΈŒλžœλ“œ μƒμ„±ν•˜κΈ°
const createBrand = asyncHandler(async (req, res) => {
  try {
    const newBrand = await Brand.create(req.body);
    res.json(newBrand);
  }
  catch (error) {
    throw new Error(error);
  }
});

// λΈŒλžœλ“œ μˆ˜μ •ν•˜κΈ°
const updateBrand = asyncHandler(async (req, res) => {
  const { id } = req.params;
  validateMongodbID(id);
  try {
    const updateBrand = await Brand.findByIdAndUpdate(id, req.body, {
      new: true,
    });
    res.json(updateBrand);
  }
  catch (error) {
    throw new Error(error);
  }
});

// λΈŒλžœλ“œ μ‚­μ œν•˜κΈ°
const deleteBrand = asyncHandler(async (req, res) => {
  const { id } = req.params;
  validateMongodbID(id);
  try {
    const deleteBrand = await Brand.findByIdAndDelete(id);
    res.json(deleteBrand);
  }
  catch (error) {
    throw new Error(error);
  }
});

module.exports = {
  createBrand,
  updateBrand,
  deleteBrand,

}

 

βœ… models/Brand.js

const mongoose = require("mongoose");

const BrandSchema = new mongoose.Schema({
  title: {
    type: String,
    required: true,
    unique: true,
    index: true
  },
}, {
  timestamps: true,
  collection: 'brand'
});

const Brand = mongoose.model("Brand", BrandSchema);
module.exports = Brand;

 

βœ… routes/brandRoute.js

const express = require("express");
const { createBrand, updateBrand, deleteBrand} = require("../controllers/brandCtrl");
const { authMiddleware, isAdmin } = require("../middlewares/authMiddleware");
const router = express.Router();

router.post("/", authMiddleware, isAdmin, createBrand);
router.put("/:id", authMiddleware, isAdmin, updateBrand);
router.delete("/:id", authMiddleware, isAdmin, deleteBrand);

module.exports = router;

 

βœ… 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 brandRouter = require("./routes/brandRoute");
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("/api/brand", brandRouter);

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
λ°˜μ‘ν˜•
Comments