rhanziy

mongoDB에 id값 auto increase 구현 본문

Node.js

mongoDB에 id값 auto increase 구현

rhanziy 2023. 1. 17. 00:27

/write페이지에서 할일을 등록했을 때 만들어진 post 컬렉션의 id 값은 자동 어지러운? 값으로 부여가 됐었다.

글 관리를 쉽게하기 위해 등록 시 id 값을 게시물 갯수 + 1로 설정해주자.

 

 

일단! todoapp데이터베이스에서 총 게시물 갯수를 담을 새로운 컬렉션을 생성해야함.

게시물 갯수를 셀 totalPost와 접근할 이름~ 여기서 totalPost 값은 int형으로 자료형을 지정해줘야한다.

아래서 구현할 제한자 increase 는 셀 수 있는 값만 들어가기때문.

 

 

이제 server.js에서 천천히.. add.post에 추가해주자...

1. 누가 폼에서 /add로 POST 요청을하면

2. counter 콜렉션 안에서 이름이 '게시물 갯수' 인 데이터를 찾아와서

3. 총게시물 갯수라는 변수에 totalPost 값을 넣어주고

4. post콜렉션에 입력폼 값을 추가할 때 마다 _id 값을 totalPost + 1로 지정한다.

5. 그럼 게시물이 추가될 때마다 counter 컬렉션 안의 totalPost 값도 더해줘야하는데!

6. $inc < increase 제한자를 사용해 { totalPost : 1 } 를 1 씩 증가시키기는 코드

//server.js

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

    db.collection('counter').findOne({name : '게시물 갯수'}, function(error, result){
        var 총게시물갯수 = result.totalPost;
        
        db.collection('post').insertOne({ _id : 총게시물갯수 + 1, title : req.body.title, date : req.body.date }, function(error, result){
            if(error) console.log(error);
            // counter라는 콜렉션에 있는 totalPost라는 항목도 1 증가시켜야함 << int타입으로 설정
            // db.collection('counter').updateOne({ 어떤데이터를 수정할지 } { 수정 값 }, function(){})
            // { $set : { totalPost : 바꿀값 } }, { $inc : { totalPost : 기존값에 더해줄 값 } }
            db.collection('counter').updateOne({name: '게시물 갯수'}, { $inc : { totalPost:1 } }, function(error, result){
                if(error) console.log(error);
                res.send('전송완료');
            });
        });
    });

});
Comments