본문 바로가기
내일배움캠프/본캠프

[TIL] 24.09.05

by WaDDak 2024. 9. 5.

몽구스Db를 연결하여 데이터베이스를 이용하는 방법을 익혀보았다.

DB를 사용하게되면 내가 내 로컬 컴퓨터가 아닌 다른 서버에 데이터를 저장하는 것이기때문에 내 컴퓨터가 꺼지든 말든 상관없이 데이터가 보존된다는 장점이 있다.

 

처음 DB를 이용한 개발이라 설치해야하는 밑준비도 많고 영어도 많이나와 생소하지만 많이 사용하여 익히는것이 중요하다.

복사 붙여넣기로 끝내지말고 한땀한땀 따라적으며 어떤식의 작동인지 익혀보자

import express from "express";

// Express.js의 라우터를 생성합니다.
const router = express.Router();

// 1. 몽구스 가져오기 Goods 모델 가져오기
import mongoose from "mongoose";
import Goods from "../schemas/goods.js";

// 2. API를 구현한다.
router.post("/goods", async (req, res) => {
  // 3. 클라이언트로 부터 전달받은 데이터를 가져온다.
  const { goodsId, name, thumbnailUrl, category, price } = req.body;
  // 4. goodsId 중복되지 않았는지 검사한다. -> 실제로 MongoDB에 데이터를 조회해서, 해당하는 데이터가 MongoDb에 존재하는지 확인한다.
  // exec() 는 Promise를 반환하여 await을 사용해 비동기를 동기적으로 반환.
  // 데이터를 조회하려할때 .exec를 하지않으면 정상적으로 데이터가 조회되지 않을수도 있다. 주의.
  // 데이터를 생성할때는 사용이 안된다. 데이터를 조회할때 주로 사용된다.
  const goods = await Goods.find({ goodsId: goodsId }).exec();
  // goodsId가 여러개 있을수 있기때문에 배열형태로 반환되게 된다.
  // 4-1. 만약, goodsId가 중복된다면, 에러메시지를 전달한다.
  if (goods.length) {
    return res
      .status(400)
      .json({ errorMessage: "이미 존재하는 데이터 입니다." });
  }
  // 5. Goods를 생성한다.
  const createdGoods = await Goods.create({
    goodsId: goodsId,
    name: name,
    thumbnailUrl: thumbnailUrl,
    category: category,
    price: price,
  });

  // 6. 생성된 상품 정보를 클라이언트에게 응답반환한다.

  return res.status(201).json({ goods: createdGoods });
});

export default router;

'내일배움캠프 > 본캠프' 카테고리의 다른 글

[TIL] 24.09.10  (0) 2024.09.10
[TIL] 24.09.09  (0) 2024.09.09
[TIL] 24.09.02  (0) 2024.09.02
[TIL] 24.08.30  (0) 2024.08.30
[TIL] 24.08.28  (3) 2024.08.28