인프런 커뮤니티 질문&답변

yami654님의 프로필 이미지
yami654

작성한 질문수

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

상품 생성, 조회 API 구현

postman에서 결과가 제대로 나오지 않습니다.

작성

·

724

2

 send누르면  아래 사진 처럼 error가 발생합니다..

server.js 코드 작성한건데 어떤게 잘못 된건지 확인좀 해주세요ㅜㅡㅜ 올려주신 소스코드보고 확인해봤는데도 못찾겠어요..ㅜ

const express = require("express");
const cors = require("cors");
const app = express();
const models = require("./models");
const port = 8080;

app.use(express.json());
app.use(cors());

app.get("/products", (req, res) => {
  const query = req.query;
  console.log("QUERY : ", query);
  res.send({
    products: [
      {
        id: 1,
        name: "농구공",
        price: 100000,
        seller: "조던",
        imageUrl: "images/products/basketball1.jpeg",
      },
      {
        id: 2,
        name: "축구공",
        price: 50000,
        seller: "메시",
        imageUrl: "images/products/soccerball1.jpg",
      },
      {
        id: 3,
        name: "키보드",
        price: 10000,
        seller: "그랩",
        imageUrl: "images/products/keyboard1.jpg",
      },
    ],
  });
});

app.post("/products", (req, res) => {
  const body = req.body;
  const { name, description, price, seller } = body;
  models.Product.create({
    name,
    description,
    price,
    seller,
  })
    .then((result) => {
      console.log("상품 생성 결과 : ", result);
      res.send({
        result,
      });
    })
    .catch((error) => {
      console.error(error);
      res.send("상품 업로드에 문제가 발생했습니다.");
    });
});

app.get("/products/:id/events/:eventId", (req, res) => {
  const params = req.params;
  const { id, eventId } = params;
  res.send(`id는 ${id}와 ${eventId} 입니다`);
});

app.listen(port, () => {
  console.log("그랩의 쇼핑몰 서버가 돌아가고 있습니다.");
  models.sequelize
    .sync()
    .then(() => {
      console.log("DB 연결 성공!");
    })
    .catch((error) => {
      console.error(err);
      console.log("DB 연결 에러");
      process.exit();
    });
});

답변 3

1

yami654님의 프로필 이미지
yami654
질문자

또 질문 있습니다.!
상품정보를 덜 입력했을 때 '모든 필드를 입력해주세요.' 라는 문구가 떠야하는데 아래 사진처럼 코드로 뜹니다.

  

서버실행 했을 때 코드는 이렇게 뜨는데... 어느부분이 잘못된 걸 까요..ㅜㅜ

그랩님의 프로필 이미지
그랩
지식공유자

해당 에러는 json 문법 오류와 관련이 있는 것 같아요! 생성쪽 api쪽 코드에 json 문법을 확인해보세요~!!

0

yami654님의 프로필 이미지
yami654
질문자

서버실행 할 때 로그에요!

그랩님의 프로필 이미지
그랩
지식공유자

models/product.js 파일을 확인해보시곘어요? 2번째 라인에 "Product"로 잘 적혀져있을까요?

const product = sequelize.define("Product", {

yami654님의 프로필 이미지
yami654
질문자

해결됐어요!! 대문자로 바꾸니 됐어요!! 감사합니다.!

저 근데 어느부분보고 어디에 에러났는지 어떻게 알 수 있나요????

그랩님의 프로필 이미지
그랩
지식공유자

cannot read property 'create' of undefined 에러는 create 메소드 혹은 자원에 접근할 때 undefined라는 자료형에서 접근하게 될 때 에러가납니다. 아래줄에 해당 에러가 나는 라인을 보면 server.js:43:18이 나옵니다.

즉 models.Product.create에 에러가 나는 것을 확인할 수 있고, Product가 undefined이기에 에러가 난다는 걸 확인할 수 있습니다. Product가 undefined인 것은 sequelize 모델을 설정할 때 생기는 에러라고 판단해서 의심을 해본 거구요 ㅎㅎ

0

그랩님의 프로필 이미지
그랩
지식공유자

현재 models.Product.create 이 부분을 호출할 때 Product, 즉 상품쪽 모델이 제대로 생성되지 않은 것 같습니다!

서버에서 처음 프로그램을 실행할 때 로그는 어떻게 찍히나요?  

yami654님의 프로필 이미지
yami654

작성한 질문수

질문하기