ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 게시물 각각에 번호달기(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

    댓글

Designed by Tistory.