인프런 커뮤니티 질문&답변
TypeError: Cannot destructure property 'id' of 'req.params' as it is undefined.
작성
·
3.1K
1
결제하기 구현 강의에서
코드를 똑같이 따라했는데 포스트맨에서 실행했을 때 계속
TypeError: Cannot destructure property 'id' of 'req.params' as it is undefined.
이런 오류가 뜨네요 ㅜ
답변 1
1
yoomzzi
질문자
const express = require("express");
const cors = require("cors");
const app = express();
const models = require("./models");
const multer = require("multer");
const upload = multer({
storage: multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads/");
},
filename: function (req, file, cb) {
cb(null, file.originalname);
},
}),
});
const port = 8080;
app.use(express.json());
app.use(cors());
app.use("/uploads", express.static("uploads"));
app.get("/banners", (req, res) => {
models.Banner.findAll({
limit: 2,
})
.then((result) => {
res.send({
banners: result,
});
})
.catch((error) => {
console.error(error);
res.status(500).send("에러가 발생했습니다");
});
});
app.get("/products", (req, res) => {
models.Product.findAll({
order: [["createdAt", "DESC"]],
attributes: [
"id",
"name",
"price",
"createdAt",
"seller",
"imageUrl",
"soldout",
],
})
.then((result) => {
console.log("PRODUCTS :", result);
res.send({
products: result,
});
})
.catch((error) => {
console.error(error);
res.status(400).send("에러 발생");
});
});
app.post("/products", (req, res) => {
const body = req.body;
const { name, description, price, seller, imageUrl } = body;
if (!name || !description || !price || !seller || !imageUrl) {
res.status(400).send("모든 필드를 입력해주세요 ");
}
models.Product.create({ description, price, seller, imageUrl, name })
.then((result) => {
console.log("상품 생성 결과 :", result);
res.send({
result,
});
})
.catch((error) => {
console.error(error);
res.status(400).send("상품 업로드에 문제가 발생했습니다");
});
});
app.get("/products/:id", (req, res) => {
const params = req.params;
const { id } = params;
models.Product.findOne({
where: {
id: id,
},
})
.then((result) => {
console.log("PRODUCT :", result);
res.send({
product: result,
});
})
.catch((error) => {
console.error(error);
res.status(400).send("상품 조회에 에러가 발생했습니다");
});
});
app.post("/image", upload.single("image"), (req, res) => {
const file = req.file;
console.log(file);
res.send({
imageUrl: file.path,
});
});
app.post("/purchase/:id", (res, req) => {
const { id } = req.params;
models.Product.update(
{
soldout: 1,
},
{
where: {
id,
},
}
)
.then((result) => {
res.send({
result: true,
});
})
.catch((error) => {
console.error(error);
res.status(500).send("에러가 발생했습니다.");
});
});
app.listen(port, () => {
console.log("그랩의 쇼핑몰 서버가 돌아가고 있습니다.");
models.sequelize
.sync()
.then(() => {
console.log("DB 연결 성공!");
})
.catch((err) => {
console.error(err);
console.log("DB 연결 에러ㅠ");
process.exit();
});
});
그랩
지식공유자
app.post("/purchase/:id", (res,req) => { 코드를 보시면 (res, req)로 되어있습니다. 보통 순서는 request가 첫번째로 response가 2번째로 오기 때문에 req, res로 적어주셔야 합니다:)




