모두의 이력서
[모두의 이력서_4일차] 몽고디비 Model Schema 작성하기
개발조각
2023. 3. 28. 12:39
728x90
반응형
처음으로 혼자서 프론트부터 백까지 하는 프로젝트이다 보니 정확하지 않을 수 있습니다!
MongoDB Model & Schema
Medel
Medel은 Schema를 감싸주는 역할을 합니다.
Schema
이부분을 스키마라고 하며,
스키마는 하나하나의 정보들(필드)을 지정해 줄 수 있는 것을 말합니다.
만약 상품에 관련된 글을 작성해야될 경우 필드를 적어 정보를 지정해 줍니다.
- 그 글을 작성하는 사람이 누구인지
- 작성을 할 때 포스트의 이름 (type은 string, 최대 50글자)
User모델 만들기
1. models 폴더 생성, models 폴더 안에 User.ts 생성하기
back
|- models
|- User.ts
2. 생성한 User.ts에 스키마 작성하기
*강의를 참고하고 작성한 거라 그대로 작성을 했습니다. 추후에 안 쓰는 필드는 삭제할 예정입니다!*
// models > User.ts
const mongoose = require("mongoose");
const userSchema = mongoose.Schena({
name: {
type: String,
maxLength: 50
},
email: {
type: String,
trim: true, // test @test.com -> test@test.com (빈칸 제거해줌)
unique: 1, // 똑같은 이메일을 쓰지 못하게
},
password: {
type: String,
minLength: 5
},
lastname: { // 나중에 지울예정
type: String,
maxLength: 50
},
role: { // 어떤 유저가 관리자가 될 수 있고 일반 유저가 될 수 있기 때문에 -> 관리자는 일반 유저도 관리
// 나중에 지울예정
type: Number, // 1: 관리자 0:일반유저
default: 0
},
image: String, // 그사람에 해당되는 이미지
token: {
type: String // 유효성 관리
},
tokenExp: {// 토큰 유효기간 : 토큰을 사용할 수 있는 유효기간
type: Number
}
})
3. 스키마를 모델로 감싸주기
// models > User.ts
const mongoose = require("mongoose");
const userSchema = mongoose.Schena({
name: {
type: String,
maxLength: 50,
},
...필드들
});
const User = mongoose.model("User", userSchema); // (모델의 이름, 스키마)
4. 마지막으로 모델을 다른 파일에서도 쓰기 위해 export 해줍니다.
// models > User.ts
module.exports = { User }; // 만든 모델을 다른 파일에서도 사용하기 위해
소스 코드
// models > User.ts
const mongoose = require("mongoose");
const userSchema = mongoose.Schena({
name: {
type: String,
maxLength: 50
},
email: {
type: String,
trim: true, // test @test.com -> test@test.com (빈칸 제거해줌)
unique: 1, // 똑같은 이메일을 쓰지 못하게
},
password: {
type: String,
minLength: 5
},
lastname: { // 나중에 지울예정
type: String,
maxLength: 50
},
role: { // 어떤 유저가 관리자가 될 수 있고 일반 유저가 될 수 있기 때문에 -> 관리자는 일반 유저도 관리
// 나중에 지울예정
type: Number, // 1: 관리자 0:일반유저
default: 0
},
image: String, // 그사람에 해당되는 이미지
token: {
type: String // 유효성 관리
},
tokenExp: {// 토큰 유효기간 : 토큰을 사용할 수 있는 유효기간
type: Number
}
})
const User = mongoose.model("User", userSchema);
module.exports = { User }; // 만든 모델을 다른 파일에서도 사용하기 위해
require → import
사실 타입스크립트로 작성하다 보니 require 말고 import로 작성해도 됩니다.
그래서 require를 import로 교체해 주었습니다.
import { Schema, model, Model } from "mongoose";
const userSchema = new Schema({
name: {
type: String,
maxlength: 50,
},
email: {
type: String,
trim: true,
unique: 1,
},
password: {
type: String,
minlength: 5,
},
lastname: {
type: String,
maxlength: 50,
},
role: {
type: Number,
default: 0,
},
image: String,
token: {
type: String,
},
tokenExp: {
type: Number,
},
});
export const User = model("User", userSchema);
참고자료
잘 설명이 되어 있어서 좋은데 3년 전꺼이고 ts가 아닌 js로 하다 보니 고쳐야 될 부분이 많습니다.
https://www.youtube.com/watch?v=c92IF8Dtu0o
728x90
반응형