🤟
Vanilla-JS
  • TRIPLE-PLUS Adout
  • Babel.JS
  • 01.Vanilla-JS
    • 01. Hello JavaScript
    • 02. 변수
      • 02-1.지키면 좋은 룰(더 좋은 스타일을 위해서)
      • 02-2.숫자형꿀팁(수식 줄이기)
    • 03. 연산자
    • 04. 조건문
    • 05. 함수
      • this의 의미 6개 총정리
      • event listener와 constructor
      • 05-1. return:돌려주다
      • 05-2. 형 변환 함수
      • 05-3. Arrow function
    • 06. 객체
    • 07. 배열
      • 07-1. 배열 안에 배열(2차 배열)
      • 07-2. 배열내장 함수(forEach)
      • 07-3. 배열내장 함수(sort)
      • 07-4. 배열내장 함수(map)
      • 07-5. 배열내장 함수(indexOf)
      • 07-6. 배열내장 함수(filter)
      • 07-7. 배열내장 함수(splice, slice)
      • 07-8. 배열내장 함수(shift, unshift, pop, push)
      • 07-9. 배열내장 함수(concat, join)
      • 07-10. 배열내장 함수(reduce)
      • 07-10. 배열내장 함수(reduce)2
    • 08. 반복문
    • 09. Class와 프로토타입
      • 09-1. 프로토타입과 클래스 - 생성자
      • 09-2. 프로토타입과 클래스 - 생성자 상속하기
      • Class & Constructor & Method
      • super
      • Static Method
      • Class Getter, Setter
      • Information Hiding
      • Inheritance & Polymorphism
      • Overriding
      • Abstract Class
      • Interface
    • Math 정리
    • String 정리
    • Array정리
    • Date 정리
      • D-day 구하기
  • 02.Vanilla-JS
    • 01.삼항연산자
    • 02. Truthy and Falsy
    • 03. 단축 평가 논리 계산법
    • 04. 함수 업그레이드 (default parameter/arguments)
    • 05. 조건문 더 스마트하게 쓰기
    • 06. 비구조화 할당 (구조분해) 문법
    • 07. spread 와 rest
      • 함수 파라미터에서의 rest(params)
      • 함수 인자에서의 spread
    • 08. 자바스크립트의 Scope 에 대한 이해
    • 09. Hoisting 이해하기
    • 10. Native DOM 선택
  • 03.비동기 처리
    • 01. fetch, then, catch[Promise] 이해하기
    • 02. 직접 만들어보는 Promise 객체
    • 03. async/await
    • 04. Promise all, Promise.race
  • REST API 제대로 알고 사용하기
    • mongodb Atlas
    • mongodb Atlas(DB)에 접근하려면
    • URL 이름짓기 관습
    • Database에 자료 저장하는 법
    • 게시물마다 번호를 달아 저장하기
    • 게시물마다 번호를 달아 저장하기2
  • JQUERY + SCRIPT 유용한 코드 정리
  • Practice(실습)
    • 카운터 만들기
    • reduce
    • 데이터 자료형 활용하기1
    • 데이터 자료형 활용하기2
    • 데이터 가지고 놀기(응용)1
    • 데이터 가지고 놀기(응용)2
    • REST API
    • 배열 만들기1
    • 배열 만들기2
    • 배열 만들기3
    • 비구조화 할당
    • rest + spread(응용)1
    • rest + spread(응용)2
    • rest + spread(응용)3
    • 반복문 내장함수(응용)1
    • 함수 가지고 놀기(응용)1
    • 서버와의 통신1
    • 서버와의 통신2
    • new Promise(응용)2
    • new Promise(응용)3
    • 자바스크립트 이벤트 위임 핵심 정리
Powered by GitBook
On this page
  • _id를 달아서 저장합시다.
  • 지금까지 몇번 게시물을 발행했는지 기록합시다.
  • POST 요청 처리하는 코드를 수정해야겠군요

Was this helpful?

  1. REST API 제대로 알고 사용하기

게시물마다 번호를 달아 저장하기

_id를 달아서 저장합시다.

MongoDB에 데이터를 저장할 땐 _id라는 값을 꼭 넣으셔야합니다. 그래야 삭제도 쉽고 나중에 수정도 쉬우니까요. 아까 모르고 안넣으셨다고요? 괜찮습니다. 안넣으시면 MongoDB에서 알아서 ObjectId() 어쩌구 이런걸 만들어서 아이디를 강제로 부여해줍니다. 근데 너무 복잡하죠? 그러니까 애초에 저장할 때 직접 _id를 달아봅시다.

전에 작성했던 post 요청 처리하는 서버코드를 다시 살펴봅시다.

app.post('/add', function(요청, 응답){
  응답.send('전송완료');
  db.collection('post').insertOne( { _id : 1, 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    console.log('저장완료')
  });
});

insertOne 함수 안에 _id : 1 이라는 항목을 요로케 써주시면… 번호달아서 저장하기 끝입니다.

그런데 1이라고 하드코딩을 해버렸네요. 글 쓸 때마다 항상 _id : 1일 수는 없죠? 2번째 글이면 _id: 2, 3번째 글이면 _id : 3이 되어야 합니다.

다른 DB에선 _id를 자동으로 1증가시켜서 추가해주세요~ 이런 기능이 있는데 (Auto Increment라고 합니다) MongoDB는 그런거 없습니다. 그래서 여러분이 직접 지금까지 몇번 게시물을 발행했는지를 기록하셔야합니다. 그리고 방금 코드를 이렇게 바꾸면 되겠죠?

app.post('/add', function(요청, 응답){
  응답.send('전송완료');
  db.collection('post').insertOne( { _id : 지금까지 발행한 게시물 갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    console.log('저장완료')
  });
});

_id : 1 이라고 하드코딩 하지 말고 위 코드 처럼 바꾸면 글을 하나 발행할 때마다 유니크한 _id가 부여되겠군요.

지금까지 몇번 게시물을 발행했는지 기록합시다.

여러분 mongodb atlas 홈페이지 들어가셔서 대시보드에서 collection을 하나 더 만들도록 합시다.

좌측에 여러분 todoapp이라는 데이터베이스에 + 버튼을 누르시면 collection(파일)을 하나 더 생성 가능합니다.

counter라는 이름을 가진 collection을 생성합시다.

방금 새로만든 counter라는 콜렉션에 데이터를 하나 강제로 집어넣어봅시다.

우측에 보면 Insert Document 흰버튼을 누르시면 강제로 항목을 하나 추가 가능합니다. 그리고 이렇게 그대로 작성한 후 Insert 버튼을 누르면 되겠습니다. (totalPost 라는 항목은 Int32로 셋팅하는거 잊지마세요)

이게 바로 여러분이 지금까지 몇번 게시물을 발행했는지를 기록할 공간입니다. totalPost라는 곳에 저장할 것입니다. 지금은 아무 게시물도 발행되지 않았다고 생각하고 초기값은 0이라고 합시다.

POST 요청 처리하는 코드를 수정해야겠군요

그리고 방금 코드를 이렇게 바꾸면 되겠죠?

app.post('/add', function(요청, 응답){
  
  // counter라는 콜렉션에서 totalPost라는 총 게시물 갯수 숫자를 가져와서
  var 총게시물갯수 = 여기에 저장함
  // 그 다음에 밑에 코드 실행
  db.collection('post').insertOne( { _id : (총게시물갯수 + 1), 제목 : 요청.body.title, 날짜 : 요청.body.date } , function(){
    console.log('저장완료')
    응답.send('전송완료');
  });
});
app.post('/add', function(요청, 응답){
  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({name:'게시물갯수'},{ $inc : {totalPost:1} },function(err, data){
        if(err) {return console.log(err)}
      });
    });
  });
});

1번줄 : 누군가 /add 경로로 post 요청을 하면

2번줄 : counter라는 콜렉션에서 총게시물갯수 저장해놓은 문서를 찾습니다. 그 찾은 문서는 결과라는 변수에 담겨옵니다.

3번줄 : 결과.totalPost하면 총게시물 갯수가 뿅하고 출현합니다. 그걸 var 총게시물갯수 변수에 저장해서 사용합니다.

4번줄 : 이제 글저장 시간입니다. post라는 콜렉션에 insertOne을 이용해 게시물을 추가합니다. 추가할 때 _id를 var 총게시물갯수를 이용해 제대로 부여해줍니다.

6번줄 : 성공했다고 응답.send로 브라우저에게 글자를 보냅니다. 응답.render, 응답.redirect 이런 것도 이용가능합니다.

PreviousDatabase에 자료 저장하는 법Next게시물마다 번호를 달아 저장하기2

Last updated 5 years ago

Was this helpful?