게시물마다 번호를 달아 저장하기2

DB 데이터를 수정하고 싶으면 updateOne을 쓰시면 됩니다.

counter라는 콜렉션 내의 자료를 수정하고 싶으면 이렇게 하시면 됩니다.

db.collection('counter').updateOne( {요런 이름의 자료를} , {이렇게 수정해주세요} , function(에러, 결과){
  console.log('수정완료')
})

updateOne 함수엔 파라미터가 세개가 필요합니다. 왼쪽엔 { name : ‘게시물갯수’ } 이렇게 자료를 찾을 수 있는 이름이라든지 쿼리문을 적어주면 됩니다.

가운데는 여러분이 수정할 값을 입력해주시면 됩니다. 그런데 약간 특이합니다. { $set : { totalPost : 100 } } 이렇게 넣어서 값을 아예 100으로 변경할 수도 있고 { $inc : { totalPost : 5 } } 이렇게 넣어서 값을 5만큼 더해줄 수도 있습니다. $ 표시 붙은게 바로 operator 라는 문법입니다. 여러 종류가 있으니 나머지는 필요할 때 찾아쓰도록 합시다.

오른쪽은 그냥 콜백함수입니다. 수정이 실패나 성공시 실행할 코드를 안에 담으시면 됩니다.

그럼 데이터를 1 증가시키려면 이렇게 하면 되겠군요.

db.collection('counter').updateOne( {name : '게시물갯수' } , { $inc : { totalPost : 1 } } , function(에러, 결과){
  console.log('수정완료')
})

이 코드를 실행하면 totalPost라는 항목이 1 증가합니다. 끝!

컨텐츠를 하나 발행할 때 아래 코드를 실행 시켜주세요!!.

app.post('/add', function (요청, 응답) {
  db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과){
    var 총게시물갯수 = 결과.totalPost

    db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date }, function (에러, 결과) {
      db.collection('counter').updateOne({name:'게시물갯수'},{ $inc: {totalPost:1} },function(에러, 결과){
	      if(에러){return console.log(에러)}
          응답.send('전송완료');
        })
      })

  })
})

Last updated