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('전송완료');
});
});
});
});