기본적으로 정의는 다음과 같다.
- Mongoose : MongoDB ODM(Object Data Modeling)
- Schema : Data Structure
이때, 기본적으로 MongoDB는 NoSQL 방식의 Database이기 때문에, 기본적으로 schema가 없으나, mongoose를 이용 하여 schema를 정의할 수 있다.
Schema는 DB에서 사용할 데이터 구조(Data Structure)를 정의하는 데 사용하는데, 예를 들면 username, email, pw 등의 속성값과 필수 여부 등을 정의하는 것이다.
Mongoose는 schema를 사용하여 MongoDB에서 데이터의 CRUD(Create, Read, Update, Delete) 작업을 수행한다.
데이터의 일관성을 유지하고, 데이터 구조에 대한 검증을 목적으로 한다.
이것은 NoSQL인 MongoDB가 가질 수 있는 단점을 보완하기 위한 것이다.
먼저 mongoose는 Node.js 환경에서 사용되기 때문에,
Node.js 환경이 구축되어 있어야 한다.다음 mongoose를 사용할 project를 생성해야 한다.
여기까지 작업이 완료되었다면, 이제
terminal
을 이용하여 다음 작업을 하면 된다.npm install mongoose
이제 mongoose를 아래와 같이 사용할 수 있다.
// 폴더 경로 : (최상위 폴더) index.js const mongoose = require("mongoose") const URL = "사용할 URL 주소" mongoose.connect(URL)
Schema를 사용하기 위해서는 먼저 mongoose 모듈을 불러 와야 한다.
const mongoose = require("mongoose")
이어서
mongoose.Schema
함수를 이용하여 Schema를 정의 할 수 있다.const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, age: { type: Number, required: true }, })
혹은, 아래와 같이 구조분해를 통해 간단히 선언할 수 있다.
const {Schema} = require("mongoose") const userSchema = new Schema({ ... }
앞에서 생성한 Schema를 사용하기 위해 export 해야 한다.
const User = mongoose.model("User",userSchema); module.exports = User;
혹은, 여러 가지 model을 한번에 보낼 수도 있다.
// 폴더 경로 : models/schemas/user.js const {Schema} = require("mongoose") const userSchema = new Schema({ ... }) module.exports = UserSchema; // 폴더 경로 : models/index.js const mongoose = require("mongoose") const UserSchema = require("./schemas/user") exports.User = mongoose.model("User", UserSchema);