스파르타 Node.js 입문 5 (MongoDB → mongoose)

병아리의최후·2022년 12월 14일
0

Node.js

목록 보기
5/13

01. 준비하기

1. 데이터베이스와 MongoDB의 개념

1) 데이터베이스란 뭘까?

  • 데이터를 잘 저장하고 잘 찾기 위해 만들어진 소프트웨어를 Database Management System(DBMS) 이라 부른다.

  • DBMS가 설치된 서버 컴퓨터를 데이터베이스 서버(DB 서버)라고 부를 수 있다.

  • 흔히 "데이터베이스에 저장한다" 라고 말하면 이 DBMS가 설치된 서버에 데이터를 저장한다고 말하는것
    즉, DB 서버의 모든 데이터는 DBMS가 관리

    데이터 베이스의 종류는  관계형 데이터베이스(Relational Database (RDB)) 와
    비관계형 데이터베이스(Non-relational Database (NoSQL))가 존재하는데 자세한 건 나중에 후술하겠다.

2) MongoDB는 뭘까?

  • 국내, 외 수많은 개발자들에게서 사용되고있는 가장 인기있는 비관계형 데이터베이스 (NoSQL) 중 하나
  • 모든 데이터가 JSON 형태로 저장.
  • 복잡한 구조를 쉽게 저장할 수 있는 장점.
  • 무료로 사용할 수 있다.
  • 스케일을 쉽게 줄이고 늘일 수 있다.

3) 웹 서버와 DB 서버는 어떤 관계일까?

 브라우저 ↔ 웹 서버 ↔ DB 서버
 
 

시작하기 전에 MongoDB와 Studio 3T를 설치하자

02. 시작하기

1. 코드에서 MongoDB 이용

먼저 mongoose를 설치해 준 후, schemas라는 폴더를 생성하고 그 안에 DB연결 코드를 넣을 js문서를 생성해준다.

코드를 입력하면 MongoDB연결 완료!

본격적으로 시작하기 전, 용어들을 짚고 넘어가면

  • mongoose의 문서(Document)란?
    • MongoDB에서 가지고 있는 각 데이터 하나하나를 문서(Document)라고 정의
      1개 이상의 Key-Value의 쌍으로 이루어져 있음.
  • mongoose의 컬렉션(Collection)이란?
    • JSON 형식의 여러가지 문서(Document)를 보유할 수 있다.
    • 이후에 설명할 관계형 데이터베이스(RDB)Table과 동일한 역할을 한다.
  • mongoose의 스키마(Schema)란?
    • 스키마는 컬렉션(Collection)에 들어가는 문서(Document)에 어떤 종류의 이 들어가는지를 정의.
    • 데이터를 모델링할 때 사용.
    • 대표적 스키마 타입은 null, string, Number, date, Buffer, Boolean, ObjectId, Array
  • mongoose의 모델(Model)이란?
    • 데이터베이스에 데이터를 저장해줄때 데이터의 구조를 담당.
    • 스키마를 사용하여 만들고, MongoDB에서 실제 작업을 처리할 수 있는 함수들을 지니고 있다.
    • 문서(Document)를 생성할 때 사용.

상품 모델 작성

상품 생성 API 작성

app.js에서의 작업
이 때 주의할 점은 app.use의 순서
미들웨어는 순차적으로 거쳐가기 때문에 express.json을 위에 써주자

라우터에서 작업

Thunder Client로 상품 생성 API 호출하면서 추가할 정보값 넣어주기

200OK가 뜨면서 정상적으로 반응하는것을 볼 수 있다.

DB에는 잘 들어갔을까?


Good

03. 장바구니 구현 (1)

1. 장바구니를 구현하려면 뭐가 필요할까?

처음이라 쉽게 떠오르지 않는다... 보통 아래의 기능들이 필요하다 한다.

  1. 장바구니 목록 조회
  2. 장바구니에 상품 추가
  3. 장바구니의 상품 제거
  4. 장바구니의 상품 수량 수정

가보자~

2. 장바구니 모델 작성

어떤 상품을 담았는지(goodsId), 몇개를 담았는지(quantity) 알 수 있어야 한다.

3. 장바구니 목록 조회 API 작성

  1. 장바구니의 데이터를 찾아온다.

  2. 장바구니 데이터베이스에는 goodsId와 quantity 정보밖에 담겨있지 않기 때문에
    장바구니에 담겨있는 상품의 아이디에 맞는 상품 정보를 한번 더 가져와 준다.

app에서

Thunder client에서.. 아직 장바구니에 입력된 값이 없어 [ ]가 뜬다

04. 장바구니 구현 (2)

1. 장바구니에 상품 추가 API 작성

send 누르면

send를 한번 더 보내면

2. 장바구니의 상품 수량 수정 API 작성

99번 상품 없어도 true 뜬다.

2번 상품 수정

수정완료!

3. 장바구니의 상품 제거 API 작성

0개의 댓글

관련 채용 정보