dada's

[Node.js] node.js 프로젝트 - To Do App 만들기 7 (게시물마다 번호 달기 ) 본문

Node.js

[Node.js] node.js 프로젝트 - To Do App 만들기 7 (게시물마다 번호 달기 )

dykang 2022. 6. 29. 20:35
728x90

 

 

MogoDB에 데이터를 저장하고 보면 '_id'라는 값이 추가되어 저장된다

이 값을 설정하지 않고 저장하면 MongoDB에서 알아서 만들어서 강제로 부여해준다

데이터를 구분하고 관리하기 위해서는 데이터만의 고유한 값을 가지고 있어야 관리하기 편하기때문이다

이 아이디를 활용해서 데이터를 가져다 쓰기 쉽게 하기 위해 게시물마다 1,2,3....이런식으로 순서대로 번호를 부여해보자

 

 

 

[게시물마다 아이디 부여하는 방법]

 

1. MongoDB사이트에 접속하고 대시보드에서 collection을 하나 더 만든다

프로젝트 진행중인 todoapp저 부분에 마우스 가져다 대면 +버튼 나오니 그걸로 counter라는 collection을 하나 더 생성했다

그리고 insert document버튼을 클릭해서 데이터를 하나 만들어주는데 totalPost안에 총게시물 갯수를 저장 해 줄거다

 

 

2. 게시물을 POST요청하고 있는 곳에 코드를 추가하자

//DB저장 방법
app.post('/write', function (요청, 응답) {
  db.collection('counter').findOne({ name: '게시물갯수' }, function (에러, 결과) {
    var totalPost = 결과.totalPost;
    db.collection('post').insertOne({ _id: totalPost + 1, title: 요청.body.title, text: 요청.body.formText }, function (에러, 결과) {
      db.collection('counter').updateOne({ name: '게시물갯수' }, { $inc: { totalPost: 1 } }, function (에러, 결과) {
       // 문법 : db.collection('counter').updateOne({어떤 데이터를 수정할지},{수정값})
        if (에러) { return console.log(에러) };
      });
    });
  });
  응답.redirect('/list');
  //post요청이 끝나고 해당 페이지로 이동하는 문법
});
//auto increment : 글번호 달아서 저장하는것인데 db에 거의 다 있지만 mongoDB는 없음

 


💡용어정리💡

• findOne() : collection내에서 원하는 문서를 쉽게 찾아주고 찾은 결과는 function 안에 결과라는 파라미터에 담긴다. (에러는 에러 났을 경우임)

insertOne() : insert를 대체하기 위해 만들어 졌으며 단일 도큐먼트를 삽입하는 명령어이다.

updateOne() : collection내의 자료를 수정하고 싶을때 사용한다. 

 

[updateOne() 추가 설명]

updateOne()은 파라미터가 3개가 필요하다

1. 첫번째 파라미터  : 자료를 찾을 수 있는 이름이나 쿼리문을 적어주면된다

2. 두번째 파라미터 : 수정할 값을 입력하면 되는데 operator라는 문법이다 종류가 많은데 내가 사용한 $inc은 숫자만큼 더해준다는 의미다.

3. 세번째 파라미터 : 콜백함수이다. 수정이 실패나 성공시에 실행할 코드를 안에 담으면 된다.


 

728x90
Comments