데이터베이스 추가하기

강현구·2022년 1월 13일
0

Node.js

목록 보기
14/19

현재 데이터베이스에 품목이 하나만 추가 되어 있는데, 더 많이 추가해 보자.
추가할때는 REST에 따라서 method는 POST를 쓰는걸 권장한다.
POST 메소드의 특징은 body라는 추가적인 정보를 담아 서버에 전달 할 수 있다.
URL호출에 어떤 데이터를 추가할지 그 값을 body라는 이름으로 넘겨줄 것이다.
먼저 전에 만들어 두었던 routers/products.js 파일로 들어간다.
거기서 맨 아래 module.exports = router 위에다가

router.post('/products', async (req, res) => {
  const { productId, name, imagelUrl, tag, price } = req.body;

  isExist = await Products.find({ productId });
  if (isExist.length == 0) {
    await Products.create({ productId, name, imagelUrl, tag, price });
  }
  res.send({ result: "success" });
});

이렇게 추가해준다.
post메소드로 /api/products에 접속하면 아래가 실행된다.
productId, name, imageUrl, tag, price를 만들어서 bady로 받아온다.
그리고 데이터베이스에서 입력받은 productId를 찾고 isExist에 넣는다. 만약 하나라도 있다면 추가하지 않고, 하나도 없으면 Products.create를 이용해서 데이터베이스에 정보값을 넣는다.
그리고 완료 되었으면 결과로 success를 표시한다.

이제 Post 메소드를 사용하기 위해 Insomnia를 다운받아서 설치한다.
Insomnia 다운로드 링크
여기에 들어가서 다운받으면 된다.
다운받고 설치를하고 실행을 시킨다.
들어가면 오른쪽 상단쯤 create가 보이는데 그걸 눌러서 Request Collection을 눌러서 만들어 준다.
이름은 아무거나 해도된다.
만들었으면 이제 ctrl+n 을 눌러서 New Request를 해준다.
마찬가지로 이름은 아무거나 해도된다.
그리고 오른쪽에 Get 이라고 되어있는데 그것을 Post로 바꿔준다.
그럼 POST 옆으로 또 뭐가 뜨는데 그것은 json으로 선택 해 준다.
그러면 완료 되었고 이제 가운데 상단에 POST옆으로 주소를 쓰는 칸에 자신이 지정해준 주소를 쓴다.
여기서 나는 http://localhost:3000/api/products 이렇게 했으니 이렇게 써줬다.
그리고 그 밑으로는 무슨 정보를 저장 할 것이냐 인데,
위에 products.js에 지정해 준것처럼 productId, name, imageUrl, tag, price 를 써주면 된다.

{
   "productId": 2,
   "name": "와인",
   "imageUrl": "https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.purewow.com%2Ffood%2Ftypes-of-wine&psig=AOvVaw005qmMSl8cI4uRAVJdCdgJ&ust=1642134113056000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCIjzxrvwrfUCFQAAAAAdAAAAABAJ",
   "tag": "drink",
   "price": 30000
}

나는 이렇게 써주었다.
이렇게 써주고 send를 누른다.
안될수도 있다. 필자는 오류가 났다.
확인해 보니 express의 버전이 높아서 새로운 설정이 필요한 것이었다.
일단 vscode 터미널에

npm i body-parser

이것을 입력해 다운로드 받아준다.
그리고 최상위 폴더에 있는 index.js 파일에 들어간다.

const bp = require('body-parser')

일단 이것을 최상단에 써준다.
그리고

app.use(bp.json())
app.use(bp.urlencoded({ extended: true }))

이것을 적당히 위에 써주는데 api루터보단 위로 가야된다.
그냥 const port = 3000 바로 아래다가 써주자.
이러고 다시 해보면 정상적으로 데이터베이스에 추가되는 것을 알수있다.
Robo 3T를 실행시켜서 확인해도 된다.
이렇게 데이터베이스에 추가하는 것 까지 해보았다.
여러개를 추가해 보도록 하자.

추가)

오류가 난게 저 문제가 아니고, index.js 폴더에서

app.use(express.json())
app.use(express.urlencoded({extended: true}))

이 구문이 순서가 잘못되어있었다.
이 구문들을 const port 아래에 바로 넣어주면 된다.

profile
초보개발자

0개의 댓글

관련 채용 정보