Amazon_Clone - 2. Product

Product Model

const productSchema = new mongoose.Schema({
    name : {type:String, required:true, unique:true},
    image : {type:String, required:true},
    brand : {type:String, required:true},
    category : {type:String, required:true},
    description : {type:String, required:true},
    price : {type:String, required:true},
    countInStock : {type:String, required:true},
    rating : {type:String, required:true},
    numReviews : {type:String, required:true},
},{
    timestamps:true
});
const Product = mongoose.model("Product",productSchema)

위에는 Product Model Schema 입니다.

상품들 불러오기

productRouter.get(
  "/",
  expressAsyncHandler(async (req, res) => {
    const products = await Product.find({});
    if (products) {
      res.send(products);
    } else {
      res.status(404).send({ message: "Products Not Found" });
    }
  })
);

클라이언트가 /api/products/ 으로 GET 호출하면 실행되는 라우터입니다. DB에서 Product에 올라가있는 모든 Product들을 불러와 products에 할당 후 반환합니다.

특정상품 불러오기

productRouter.get(
  "/:id",
  expressAsyncHandler(async (req, res) => {
    const product = await Product.findById(req.params.id);
    if (product) {
      res.send(product);
    } else {
      res.status(404).send({ message: "Product Not Found" });
    }
  })
);

클라이언트가 /api/products/:id 으로 GET 호출하면 실행되는 라우터입니다. url에서 id를 참고해 DB에서 그 id를 가지고 있는 product를 불러와 반환합니다.

이게 끝입니다.. 다만 데이터가 쌓이게 된다면 모든 상품들을 불러올 때 비용이 많이 들어 Pagination 을 위한 수정이 필요합니다.
또 검색 기능을 구현하게 된다면 검색을 위한 새로운 라우터도 작성해야합니다.

좋은 웹페이지 즐겨찾기