-
게시물 각각에 번호달기(numbering)Node.js,MongoDB 2022. 4. 4. 13:42
글을 저장할 때 꼭 번호를 달아줘야 한다.
몽고db에 counter 라는 새로운 connection을 만들어준다. 그리고INSERT DOCUMENT를 이용해 기본값을 만들어준다.
totalPost를 0으로 해서 게시물이 추가되면 여기에 1씩 더해지도록 만들면 된다.
app.post('/add', function(요청, 응답){ 응답.send('전송완료'); db.collection('counter').findOne({ name: '게시물갯수'}); db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date}, function(에러, 결과){ console.log('저장완료'); }); });
그 다음, 누군가 /add로 들어가면 db.collection의 findOne(하나만 찾아주세요)을 이용해 counter라는 collection에서 name : '게시물갯수'인 데이터를 찾아주세요 라고 적어준다. 그리고 post라는 collection에 insertOne을 써서 글을 저장할 때, id도 저장해준다.
app.post('/add', function(요청, 응답){ 응답.send('전송완료'); db.collection('counter').findOne({ name: '게시물갯수'}, function(에러, 결과){ var 총게시물갯수 = 결과.totalPost; db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date}, function(에러, 결과){ console.log('저장완료'); }); }); });
그리고 콜백함수를 넣고 총게시물갯수 변수를 결과라는 오브젝트의 totalPost키값이라고 저장해놓고, 앞의 db콜렉션을 안에 넣어준다.
이러면, DB의 총게시물갯수 데이터를 가져와라 그게 끝나면 _id : 총게시물갯수 + 1해서 새로운 데이터를 post콜렉션에 저장해라가 된다.
이제, 이렇게 한번 게시물을 저장하면 총게시물갯수가 1이 더해져야 한다. 수정단계를 알아보자.
app.post('/add', function(요청, 응답){ 응답.send('전송완료'); db.collection('counter').findOne({ name: '게시물갯수'}, function(에러, 결과){ var 총게시물갯수 = 결과.totalPost; db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date}, function(에러, 결과){ console.log('저장완료'); //글 발행하고 counter내의 totalPost를 1 증가시키자. db.collection('counter').updateOne({어떤데이터를 수정할지},{수정값},function(){}) //하나수정은 updateOne 한번에 많이 수정은 updateMany }); }); });
이렇게 updateOne을 써서 데이터를 수정해준다. 위치가 중요한데, 글을 발행할 때 counter을 다시 찾아서 수정시키는 코드를 짜면 된다.
db.collection('counter').updateOne({name : '게시물갯수'},{$inc : {totalPost:1}},function(){})
우선 name이 게시물갯수인 오브젝트를 찾고, 수정값에 totalPost를 변경하고 싶은데, 수정값은 operator을 사용해야 한다.
operator은
$set 변경 / $inc 증가 / $min 기존값보다 적을 때만 변경 / $rename key값 이름변경
이렇게 여러종류가 있다. 그리고 operator 사용 시 $set : {}이렇게 한번더 {}안에 담아준다.
해당 코드는 1이 증가해야 하니까 $inc를 쓰고 totalPost의 값이 증가하게 해달라 하면 된다.
만약, 에러를 체크하고 싶다면, 콜백함수에 function(에러, 결과) {if(에러) return console.log(에러)}이런 코드를
입력해주면 된다.
'Node.js,MongoDB' 카테고리의 다른 글
URL 파라미터 (0) 2022.04.07 ajax로 삭제요청 (0) 2022.04.06 HTML에 DB데이터 넣기 (0) 2022.04.04 MongoDB에 자료저장 (0) 2022.04.01 MongoDB셋팅 (0) 2022.03.31