Product Model을 만드는 이유: 모든 정보들을 갖고 있다가
확인버튼을 누를 시 server에 보내서 DB에 저장 해야하는데
몽고DB에 colletion이 필요하기 때문에 만든다.
/product.js
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const productSchema = mongoose.Schema(
{
writer: {
type: Schema.Types.ObjectId,
ref: "User",
},
title: {
type: String,
maxlength: 50,
},
description: {
type: String,
},
price: {
type: Number,
default: 0,
},
images: {
type: Array,
default: [],
},
sold: {
type: Number,
maxlength: 100,
default: 0,
},
continents: {
type: Number,
default: 1,
},
views: {
type: Number,
default: 0,
},
},
{ timestamps: true }
); // 자동적으로 업데이트 등록
productSchema.index(
{
title: "text",
description: "text",
},
{
weights: {
title: 5,
description: 1,
},
}
);
const Product = mongoose.model("Product", productSchema);
module.exports = { Product };
/uploadProductPage.js
<FileUpload refreshFunction={updateImages} />
const submitHandler = (event) => {
event.preventDefault();
if (!Title || !Description || !Price ||
!Continent || Images.length === 0) {
return alert(" 모든 값을 넣어주셔야 합니다.");
}
//서버에 채운 값들을 request로 보낸다.
const body = {
//로그인 된 사람의 ID
writer: props.user.userData._id,
title: Title,
description: Description,
price: Price,
images: Images,
continents: Continent,
};
Axios.post("/api/product",
body).then((response) => {
if (response.data.success) {
alert("상품 업로드에 성공 했습니다.");
props.history.push("/");
//상품 업로드시 랜딩페이지로 이동하도록 설정
} else {
alert("상품 업로드에 실패 했습니다.");
}
});
};
router.post("/", (req, res) => {
//받아온 정보들을 DB에 넣어 준다.
const product = new Product(req.body);
product.save((err) => {
if (err) return res.status(400).json({
success: false, err });
return res.status(200).json({
success: true });
});
});