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 을 위한 수정이 필요합니다.
또 검색 기능을 구현하게 된다면 검색을 위한 새로운 라우터도 작성해야합니다.
Author And Source
이 문제에 관하여(Amazon_Clone - 2. Product), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wangjh789/AmazonClone-2.-Product저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)