5_node.js POST할때 _id 넣어 저장하기 with.DB Update

jangdu·2023년 3월 21일
0

node.js

목록 보기
7/11

POST할 때 _id넣어 저장하기

MongoDB에 저장 시 삭제나 수정에 용이하게 _id값을 넣어 저장해야한다.
_id값을 넣지 않았을때는 MongoDB에서 알아서 ObjectId()를 무작위 숫자, 문자로 이루어져 넣어준다.

post요청하는 코드를 먼저 보면

app.post('/add', function(req, res){
  console.log(req.body);
  // 전송에 성공하든 실패하든 뭐라도 보내야한다.
  res.send('전송완료')

  // 여기에 _id를 추가해준다.
  db.collection('post').insertOne( { _id : 1, title : req.body.todo_title, comments: req.body.todo_comments, date : req.body.todo_date} , function(){
    console.log('저장완료'); 
  });
});

근데 _id값을 게시물을 올릴 때 마다 1씩 증가하고 싶으면, 총 개시물 갯수를 가져와서 변수로 대입해 처리해야하는데,
그러려면 지금까지 게시물을 발행한 숫자를 기록해두어야한다

mongodb atlas에서 collection을 counter라는 이름으로 하나 더 만들어 보자

그리고 위 코드에서 각 개시물에 _id : (totalPost + 1)을 추가해주면 된다.
이제 totalPost를 수정해줘야하는 방법을 알아보자


DB데이터 수정 updateOne

db.collection('counter').updateOne( {바꿀 자료 이름} , {어케수정할지} , function(에러, 결과){
  console.log('수정완료')
})

updateOne의 기본형식

이를 이용해서 totalPost를 1올려서 수정해보자


app.post('/add', function(req, res){

  db.collection('counter').findOne({name : 'totalPost'}, (err, result) => {
    var total = result.totalPost;
    console.log(result)
    db.collection('post').insertOne( {_id: (total + 1), title : req.body.todo_title, comments: req.body.todo_comments, date : req.body.todo_date} , function(){
      db.collection('counter').updateOne( {name:'totalPost'} , { $inc: {totalPost:1} } , (err, result) =>{
        if (err) return console.log(err)
        res.send('전송완료')
      })
    });
  });
});

위 코드처럼 add할때 totalPost를 바꿔주는 식으로 구현해보면된다.
$inc는 totalPost를 1증가시켜 저장한다는 뜻이고,
$set : {totalPost: 100}이렇게하면 100으로 바꿔준단 뜻

totalPost가 잘 증가하는 것을 볼 수 있다.

profile
대충적음 전부 나만 볼래

0개의 댓글