MongoDB
MongoDB란?
- 비관계형 데이터베이스(NoSQL) 중 하나 입니다.
- 모든 데이터가 JSON 형태로 저장됩니다.
- 복잡한 데이터 구조를 쉽게 저장할 수 있는 장점
MongoDB Atlas
- MongoDB Atlas는 MongoDB의 클라우드 버전입니다. 이를 통해 어디에서나 쉽게 데이터베이스에 접근할 수 있게됩니다.
Studio 3T
Studio 3T란?
- Studio 3T는 MongoDB의 데이터를 더욱 편리하게 관리할 수 있는 GUI 툴입니다.
- Studio 3T는 API의 사용을 도와주는 API Client처럼 MongoDB를 위해서 만들어진 MongoDB Client입니다.
- MongoDB에 저장된 데이터를 직접 확인하고 수정할 수 있기 때문에, JavaScript 코드로만 데이터를 확인하고 수정하는 것보다 더욱 효율적으로 작업과 테스트를 할 수 있는 툴입니다.
DB Client와 API Client의 다른점은?
- DB Client:
- 직접 데이터베이스에 접근해 데이터를 조회, 추가, 수정, 삭제하는 기능을 제공합니다.
- SQL, NoSQL과 같은 다양한 유형의 데이터베이스를 지원합니다.
- Studio 3T는 이러한 DB Client의 한 종류로, MongoDB를 관리할 수 있는 툴입니다.
- API Client:
- 웹 서비스의 API에 연결하여 서버와 데이터를 송수신합니다.
- REST API와 Socket 같은 다양한 프로토콜을 지원합니다.
mongoose
코드에서 MongoDB 적용하기
- JavaScript 코드에서 DB Client 역할을 하는 무언가가 있어야 데이터베이스에 연결을 할 수 있습니다. mongoose 라이브러리를 이용해 데이터베이스에 연결할 수 있습니다.
- mongoose라는 라이브러리의 개념
- mongoose는 MongoDB에 데이터를 쉽게 읽고 쓰게 해주는 JavaScript 라이브러리입니다.
- ODM(Object Document Mapper)이라고도 부릅니다.
- ODM(Object Document Mapper)이란, JavaScript의 객체(Object)와 MongoDB의 문서(Document) 사이에서 ‘매핑’을 수행하는 도구입니다.
- mongoose의 문서란?
- MongoDB에서 가지고 있는 각 데이터 하나하나를 문서(Document)라고 정의합니다.
- 1개 이상의 Key-Value의 쌍으로 이루어져있습니다.
- JSON 형식으로 구성되어있습니다
- mongoose의 컬렉션이란?
- 컬렉션(Collection)은 여러개의 문서(Document)를 보유할 수 있는 MongoDB의 구성요소입니다.
- JSON 형식의 여러가지 문서(Document)를 보유할 수 있습니다.
- 컬렉션(Collection)은 고정된 구성요소가 존재하지 않고, 유연하게 구성할 수 있습니다.
- 이후에 설명할 관계형 데이터베이스(RDB)의 Table과 동일한 역할을 합니다.
- mongoose의 스키마란?
- 스키마(Schema)는 컬렉션(Collection)에 들어가는 문서(Document)가 어떤 종류의 값을 가질 것인지 정의하기위해 사용합니
- 예시
const UsersSchema = new mongoose.Schema({
name: String, // 문자열 타입입니다.
age: Number, // 숫자 타입입니다.
favorites: [String], // 문자열 배열 타입입니다.
createdAt: { type: Date, default: Date.now }, // 날짜 타입입니다.
someId: mongoose.Schema.Types.ObjectId // ObjectId 타입입니다.
})
미들웨어 (Middleware)
미들웨어 (Middleware)란?
- 미들웨어(Middleware)는 서버의 요청(Request)-응답(Response) 과정에서 중간에 위치하여 특정 기능을 수행하는 함수라고 볼 수 있습니다.
- 예를 들어, 모든 요청에 대해서 로그(Logging)를 남기거나, 특정 사용자만 API를 접근(Authentication & Authorization)하게 하고 싶을 때도 미들웨어를 사용합니다
- 미들웨어는 어디에 위치시키느냐에 따라 다르게 동작합니다. 일반적으로 어플리케이션에 등록된 순서대로 실행됩니다.
- 여러개의 미들웨어가 겹치는 경우, 이는 첫번째 미들웨어부터 순차적으로 진입하게 됩니다.
- 하지만 미들웨어를 거치는 중간에 next() 가 실행되지 않으면 다음 미들웨어는 실행되지 않고, 클라이언트의 요청은 거기서 종료됩니다.
- Express.js의 미들웨어는 어떤게 있나요?
- app.use(express.urlencoded({ extended: false }));
- app.use(express.json());
- Router와 미들웨어의 차이
- Router와 미들웨어는 서로 다른 방식처럼 보이지만 Router는 미들웨어 기반으로 구현된 객체이므로 미들웨어와 동일한 방식으로 작동됩니다.
- 즉, Router는 미들웨어 함수를 특정 경로에 바인딩하는 역할을 하며, 요청이 들어온 URL 경로에 따라 서로 다른 미들웨어를 실행시킬 수 있게 도와줍니다.
Joi
Joi란?
- Joi는 JavaScript 유효성 검증을 위한 라이브러리입니다. Joi는 여러 타입과 규칙을 이용해 유효성을 검증할 수 있으며, 유효성 검증에 실패하면 오류를 발생시킵니다.
Prettier
Prettier란?
- 코드 서식 관리 도구
- 어떤 규칙들을 제공하는지 살펴보기
const config = {
trailingComma: "es5", // ES5에서 제원하는 위치에 쉼표를 추가합니다.
tabWidth: 4, // Tab의 너비를 4 스페이스로 설정합니다.
semi: false, // 세미콜론을 사용하지 않습니다.
singleQuote: true, // 따옴표를 작은 따옴표(')를 사용합니다.
};
export default config;
'이노베이션캠프 > TIL' 카테고리의 다른 글
이노베이션 캠프 6일차_JSON 데이터가 정상 로드 안 되는 현상 (0) | 2025.07.12 |
---|---|
이노베이션 캠프 5일차_무한 루프 로비 화면 (0) | 2025.07.11 |
이노베이션 캠프 3일차_Node.js 기초 개념 정리 (3) | 2025.07.09 |
이노베이션 캠프 2일차_4주차 강의 정리 (0) | 2025.07.08 |
이노베이션 캠프 1일차_3주차 강의 정리 (0) | 2025.07.07 |