기본적으로 정의는 다음과 같다.
- 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);