일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 카카오
- 프로그래머스
- 파이썬
- yolov5
- Python
- 페이지네이션
- S3
- nodejs
- 사물인식
- objectdetection
- AWS
- 서류전형
- 인공지능
- 솝트 후기
- 합격후기
- 피로그래밍
- jQuery
- 파이썬 #백준 #BFS
- Java
- EC2
- 솝트
- 멋사
- 면접전형
- 멋쟁이사자처럼
- spring-boot
- jwt
- 백준
- MongoDB
- 절차지향
- CRUD
- Today
- Total
찔끔찔끔씩😎
[Sopt] 3차 세미나(1) - MongoDB, Mongoose, 견고한 NodeJS Project 본문
MongoDB
🔎 MongoDB란?
Document 지향 NoSQL 데이터베이스 시스템으로, JSON 형태의 동적 스키마형 document를 사용한다.
Document 기반으로 구성되어있으며 Database - Collection - Document - Field 계층으로 구성되어있다.
🔎 Document란?
- MongoDB에서 데이터를 저장하는 최소 단위
- 필드와 값의 쌍으로 구성된다.
- 데이터 입출력 시에는 JSON 형식을 사용하고, 저장 시에는 BSON(Binary JSON)을 반환한다.
- 관계를 갖는 데이터는 중첩 document, 배열 등을 사용하여 1개의 document로 나타낸다.
🔎 Reference 방식
1:1
1:N , 1이 N을 참조
1:N, N이 1을 참조
N:M
Mongoose
🔎 Mongoose란?
MongoDB ODM으로 비동기 환경에서 작동하도록 설계된 MongoDB의 객체 모델링 도구이다.
Promise, Call back을 지원한다.
🔎 ODM vs ORM?
ODM: Object Document Mapping - 객체와 Document 를 매핑
ORM: Object Relational Mapping - 객체와 관계형 데이터베이스를 매핑
견고한 NodeJS Project
🔎 3-Layer Architecture?
비즈니스 로직을 Route Controller에서 분리해준다.
Controller 는 Model 이 처리하기 전에 1차적으로 데이터를 가공하는 곳으로,
비즈니스 로직 수행 후에 다시 받은 데이터를 Response 한다.
Service 는 Controller 에서 받아온 데이터를 가지고 가공하여 DB에 접근해서 결과값을 받아온다.
이러한 데이터 가공 과정을 비즈니스 로직이라고 한다.
🔎 Why? How?
Why?
- 독립적인 기능 수행이 가능해지고
- 유지 보수가 쉬워지며
- 확장성, 유연성을 보장한다.
How?
- 비즈니스 로직은 Service Layer로
- Service Layer는 req, res 객체를 받지 않는다.
- req, res는 Controller Layer에서만 받도록 한다.
🔎 예시
나쁜 예시! 😡
- 모두 Route Controller에서 실행 되고 있다!
1) req, res 가공 로직
2) Model에 접근하여 user data 를 받아오는 로직
3) res 반환 로직
좋은 예시!😊😊
UserService. ts
- Service Layer에서는 비즈니스 로직만!
- Controller 한테 받은 데이터로 DB Access 만
UserController.ts
- 클라이언트한테 받은 데이터(req)를 가공
- Service를 호출하여 -> 비즈니스 로직 -> 결과값 받아오기
- response를 가공하여 반환하기
🔎 DTO
Data Transfer Object로 말 그대로 계층 간 데이터 교환을 위해 사용되는 객체이다.
Typescript 에서는 Interface를 이용하여 구현한다.
Request - Controller - Service Layer - Response 간에서 데이터를 교환할 때 사용 된다.
'Server > Nodejs' 카테고리의 다른 글
[Sopt] 5차 세미나(1) - Middleware, Authentication, API 명세서 (0) | 2022.05.18 |
---|---|
[Sopt] 4차 세미나(2) - Nodejs API 실습 (0) | 2022.05.18 |
[Sopt] 4차 세미나(1) - AWS EC2, PM2, S3 (0) | 2022.05.17 |
[Sopt] 3차 세미나(2) - NodeJS CRUD 실습✨ (0) | 2022.05.17 |
[Sopt] 1차 세미나 - Typescript, Node.js (0) | 2022.04.12 |