[Node+MongoDB]method-override 설치 및 셋팅, document 수정 및 조건식 (+수정기능 정리)

김나나·2024년 8월 28일

Node.js

목록 보기
16/50

RESTful API를 위해.. 수정 기능인 경우에는 PUT을 사용해주는게 좋은데, 이전에는 form태그에서 get과 post밖에 사용할 수 없는 상태여서 post 요청을 했던 상황이었다.
이번에 공부를 더 하게 되며 PUT과 DELETE 요청을 하는 방법에 대해서 알아보았다.


✨method-override 설치 및 셋팅

  1. 터미널 창을 열어 npm install method-override 입력하여 다운

  2. server.js서버 파일에 셋팅 코드 추가

const methodOverride = require("method-override");

app.use(methodOverride("_method"));

설치 및 셋팅을 끝냈으면 사용해보자.
앞의 포스팅에 작성하던 코드를 다시 가져와서 사용하면 좋을 것 같다.

  1. edit.ejs파일로 돌아가 form태그에 method는 POST를 그대로 두되, action부분을 아래와 같이 수정해준다.
action="/edit?_method=PUT"

이렇게 작성해주면 POST가 아니라 PUT요청으로 사용될 수 있다.

  1. 다시 server.js로 돌아와서 app.post로 작성했던 부분을 app.put으로 수정해보고 테스트해보자

✨updateOne() 추가 사용법

  1. 테스트를 위해 DB에 document를 추가로 발행시켜주는데, _id와 like를 숫자로만 사용할 것이기 때문에 Int타입으로 주고 1과 10을 넣어주었다.

여기서 like가 우리가 자주 사용하는 "좋아요👍"의 수를 의미한다고 했을 때, like에 +1을 더해보자

  1. 앞전에 수정을 하기 위해서 $set을 사용해서 덮어쓰기를 했는데, 값에 증감을 위해서는 $inc를 사용해주면 된다.
await db.collection("post").updateOne({ _id: 1 }, { $inc: { like: 1 } });

이렇게 코드를 작성했으면 _id가 1인 데이터의 like값에 +1을 해준다는 의미이다.

이렇게 해놓고 한 번 테스트를 해보자.


like의 값이 10에서 11로 증가되어 있다!


✨updateOne의 여러 연산자

$mul : 기존의 값에 *(곱하기) 곱셈
$unset : 필드값 삭제


✨동시에 여러 개의 document 수정하는 방법

updateMany()를 사용하여 여러 개의 document를 수정할 수 있다.


✨조건식을 사용하여 document를 찾고싶은 경우(필터링)

만약 like 항목이 10 이상인 document를 전부 수정하고 싶은 경우라면

{ like : {$gte : 10} }

이렇게 $gt를 사용하여 like > 10을 표시하거나, 이상이라면 $gte를 사용하여 표시할 수 있다.
동일하게, 이하의 경우 $gte를 사용하며 미만의 경우 $gt를 사용해준다.
만약 10이 아닌 것만 필터링 하고 싶은 경우는 $ne를 사용해주자.


✔수정기능 만들며 배운 것 총정리

  1. document 하나 수정: updateOne()
  2. document 여러개 수정: updateMany()
  3. 수정방법 결정:
  • $set: 덮어쓰기
  • $inc: 증감
  1. updateMany()사용 시 필터링 가능
  • $gt: 초과
  • $gte: 이상
  • $lt: 미만
  • $lte: 이하
  • $ne: 같지않음
  1. 서버에 정보가 없는 경우에는 유저에게 보내라고 하거나 DB출력
  2. method-override를 사용하여 form태그에서 PUT/DELETE 요청가능
profile
10분의 정리로 10시간을 아낄 수 있다는 마음으로 글을 작성하고 있습니다💕

0개의 댓글