Mongoose란?

Node.js와 MongoDB를 연결해주는 ODM(Object Document Mapping)이다.

MongoDB에서 가지고 있는 각 데이터를 문서(Document)라고 정의한다. 이는 1개 이상의 Key-Value의 쌍으로 이루어져 있다(객체와 동일)

<aside> 💡 ODM(Object Document Mapping) : 객체와 문서를 1:1로 매칭하 역할

</aside>

MongoDB 모듈이 있는데 왜 사용하는가?

1. Schema

Schema : 데이터베이스에서 자료의 구조, 자료의 표현방법, 자료 간의 관계를 형식 언어로 정의한 구조이다.

원래 MongoDB에는 SQL과 같은 테이블 개념이 없어(collection) 자유롭게 데이터를 넣을 수 있지만, 이는 문제가 발생할 수도 있다. 실수로 잘못된 자료형의 데이터를 넣거나, 다른 도큐멘트에는 없는 필드의 데이터를 넣을 수도 있기 때문이다.

그래서 Mongoose는 MongoDB에 데이터를 넣기 전 노드 서버 단에서 데이터를 한 번 필터링 하는 역할을 해준다.

2. Populate

MySQL의 Join 역할 기능을 Populate를 통해 어느 정도 구현을 해 줄 수 있다.

ORM에서 자동으로 Join Mapping을 해주듯이, MongoDB에도 관계 라는 개념이 있는데, 이를 ODM에서도 자동으로 Populate해서 유기적으로 편리하게 관계 기능을 사용할 수 있다고 생각하면 된다.

→ Populate는 내가 직접 사용해보지 않았음으로 다음에 다뤄보고 리뷰하겠다.

Schema 정의

noSQL을 SQL스럽게 Mongoose가 만들어준다.