Mongoose 모듈은 MongoDB 라는 NoSQL 데이터베이스를 Node.js로 사용할 수 있도록 하는 확장 모듈
mongoDB 와 node.js 를 연결시켜주는 드라이버이자 mongoDB 용 ODM(Object Data Mapping) 라이브러리
ODM (Object Data Mapping)
-객체와 문서를 1대1로 매칭한다는 의미
-Object는 자바스크립트의 객체, Document는 몽고DB의 문서
-문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔줌
-DB 의 데이터를 복잡한 명령어 없이 javascript 객체 형식으로 쉽게 사용 가능하도록 지원
mongoDB 는 NOSQL로, 정해진 규정이 없어 어떤 형식으로 데이터를 넣어도 에러가 발생하지 않음 (오류의 위험성)
mongoose 를 통해 스키마를 정의하여 정해진 타입에 맞는 데이터만 들어가도록 데이터 검증이 가능
mongoDB는 기본적으로 콜백 기반이지만 mongoose를 통해 Promise 사용 가능
mongoDB 는 쿼리문 작성 시 JSON 형식으로 작성, mongoose가 제공하는 쿼리빌더로 손 쉽게 쿼리 작성 가능
mongoose 공식 사이트
+a) Schema 와 Model
Schema
해당 컬렉션의 문서에 어떤 종류의 값이 들어가는지를 정의
Schema 를 사용함으로써 데이터가 DB에 담기기 전 유효한 data 인지 검증 가능
Model
Schema 를 이용해 만드는 인스턴스
만들어진 Model을 이용해서 데이터를 조회, 추가 하는 등의 DB 내 실제 작업이 가능
*Model 객체로 데이터를 관리 (수정, 삭제 등)할 때 Schema를 활용해 데이터 유효성을 검사
yarn init -y
로 새로운 package.json 파일 생성 후 yarn add mongoose
로 mongoose 라이브러리를 패키지에 설치만들어진 Schema를 토대로 모델 생성
생성된 모델(User)에 데이터 값을 집어넣음
.then()
으로 저장 후 결과를 콘솔 로그 출력으로 확인 +a) mongoose를 이용한 유효성 검증
유효성 검증 예제 1
required
key 값에 true 를 지정해 주면 필수값으로 지정 됨 (해당 값이 입력되지 않을 시 검증처리에서 유효성 실패처리 됨)유효성 검증 예제 2
mongoose Schema 관련 공식 Docs를 찾아보면 Custom validator 라는 기능을 제공
해당 기능을 통해 입력된 값(value)에 대해 직접 정의한 로직대로 진행되도록 구현 가능
유효성 검증 예제 2 (validator 라이브러리 사용)
+a) Mongoose의 Collection 네이밍 방식
Mongoose 에서는 시스템상의 명명 충돌을 방지하고, 중독 가능성을 배제하며 가독성을 높이기 위해 컬렉션 이름을 복수형으로 지정
즉, Model 생성 시 대문자 형으로 이름을 지정하더라도 내부적으로 복수형 소문자로 바꿔 버림