본문 바로가기
웹개발/Node.js

[Node.js] [MongoDB] 게시물에 번호달기(.updateOne)

by 철없는민물장어 2023. 2. 16.
728x90
반응형

게시물마다 번호를 달면 게시물들을 관리하기 좋다.

 

게시물 개수를 세기 위해서

DB에 'counter'라는 콜렉션을 하나 더 생성한 다음,

{name: 게시물개수

totalPost: 0}를 작성해서 insert 해주었다.

 

이제 글을 작성할 때마다 'count' 콜렉션의 name:게시물개수인 요소의 tatalPost 값을 1 증가시켜주면 된다.

 

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

    res.send('전송완료')
    //console.log(req.body.title)
    db.collection('counter').findOne({'name' : '게시물개수'},function(에러,결과){
        //name이 게시물개수인 데이터를 찾음(카운터 사용)

        var 게시물개수 = 결과.totalPost;

        db.collection('post').insertOne({_id:게시물개수+1,'title':req.body.title,'date':req.body.date},function(에러,결과){
            console.log('저장완');
            //db에 데이터를 저장하고
            db.collection('counter').updateOne({'name':'게시물개수'},{$inc:{'totalPost':1}},function(에러,결과){
               //db의 counter에 있는 totalPost값을 1 증가시킴
                if(에러){
                    return console.log(에러);
                }
            });


        })
    }); 

})

db.collection('counter').findOne({'name':'게시물개수'},function(){})으로 일단 게시물개수에 접근한다.

db에 게시물내용을 저장하는데,

_id: 게시물개수+1 요소를 추가로 해서, id값이 게시물번호가 되게 했다.

 

이 처리를 하고 나면, db.collection('counter').updateOne()으로 게시물개수를 1 증가시켜주면 되는데,

updateOne({어떤 요소를},{$inc:{이렇게}},function(){}) 형식으로 쓰면 된다.

중간에 있는 $inc는 증가시킨다는 뜻이고,

이 외에는 $set, $rename등을 쓸 수 있다.

728x90
반응형

댓글