Model를 만드는 과정.
models/user.js
스키마를 정의한다.
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
id: {
type: String,
require: true,
unique: true,
},
pw: {
type: String,
require: true
},
name: {
type: String,
require: true
}
})
module.exports = mongoose.model('User', userSchema)
⭐ 몽구스는 model의 첫 번째 인자로 컬렉션 이름을 만든다.
'User'
→ 'users'
컬랙션이 강제 개명된다.
강제 개명이 싫다면 mongoose.model('User', userSchema, 'myfreename')
routes/users.js
모델을 가지고 CRUD를 수행한다.
mongoose.Schema
는 다양한 기능을 제공한다.required: true
unique: true
primary key
lowercase: true
trim: true
필드의 공백 제거
index: true
보조 index, 해당 필드를 검색할 때
필드 제어
default: 0, max: 50
[String] or [{ type: String }]
String 배열복합 인덱스
userSchema.index({ email: 1, nickname: 1 });
다큐먼트에는 없지만 객체에는 있는 가상의 필드를 만든다
userSchema.virtual('detail').get(() => {
return `저는 ${this.name}이고 비번은 ${this.pw}입니다 ㅋㅋ`;
});
조회 할 때 detail
필드가 생긴다