카테고리 없음
[MongoDB] 스키마 정의하고 모듈화 하기
장일규
2022. 5. 11. 21:29
이번에는 Node.js + MongoDB 환경에서
mongoose를 사용하여 사용자 정보를 다루는 User 모델을 정의하고,
이를 모듈화하여 외부에서 사용할 수 있도록 구성하는 방법을 다룬다.
핵심은
"어떻게 하면 DB에 들어갈 유저 정보를 정의하고, 그걸 코드로 관리할 수 있느냐"
이걸 mongoose로 푼다는 거다.
mongoose 설치
먼저 스키마(Schema)를 정의하기 위해서는 mongoose를 프로젝트에 설치한다.
$ npm install mongoose --save
Importing
const mongoose = require('mongoose');
models 폴더 만들기
폴더를 만든 후 회원(User)를 정의하기 위한, User.js파일을 만들어 줍니다.
회원(User)에 필드를 정의
- 회원 필드에 요구사항
- email(이메일)이 필수적으로 필요하고 고유하다.
- password(비밀번호)가 필수적으로 필요하다.
- name(이름)이 필수적으로 필요하다.
- gender(성별)이 필수적으로 필요하다.
- introduction(소개)는 선택사항이다.
- 회원에 대한 메타 데이터
- 회원은 계정 상태를 가지고 있다.
- active, inactive, deleted, banned
- 회원이 가질 수 있는 권한
- user, admin
- 기본 권한은 user이다.
- 회원은 계정 상태를 가지고 있다.
Users.js
const UserSchema = new mongoose.Schema({
// 메타데이터
accountStatus: {
type: String,
enum: {
values: ["active", "inactive", "deleted", "banned"],
message: "{VALUE} is not supported",
},
default: "active",
},
role: {
type: String,
enum: {
values: ["user", "admin"],
message: "{VALUE} is not supported",
},
default: "user",
},
// ==== 회원 필드 ====
// 이메일
email: {
type: String,
required: [true, "email is missing"],
unique: [true, "email already exists"],
},
// 비밀번호
password: {
type: String,
required: [true, "password is missing"],
},
// 이름
name: {
type: String,
required: [true, "name is missing"],
enum: {
values: ["male", "female"],
message: "{VALUE} is not supported",
},
},
// 소개
introduction: {
type: String,
default: null,
},
},
{timestamps: true}
);
모델로 감싸기
module.exports = mongoose.model("User", UserSchema);