Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 엘리스 AI 트랙 5기
- 리트코드
- [파이썬 실습] 중급 문제
- 코딩부트캠프
- 자바스크립트 날씨 웹 만들기
- 자바스크립트 reduce()
- 개발일기
- 자바스크립트
- 자바스크립트 split()
- 자바스크립트 sort()
- 프론트개발공부
- HTML
- 날씨 웹 만들기
- RN 프로젝트
- reactnativecli
- 엘리스
- 개발공부
- 자바스크립트 날씨
- [파이썬 실습] 기초 문제
- leetcode
- 프론트개발
- [파이썬 실습] 심화 문제
- 프로그래머스
- 부트캠프
- 간단한 날씨 웹 만들기
- JavaScript
- 엘리스 ai 트랙
- 코드스테이츠
- [AI 5기] 연습 문제집
- 삼항연산자
Archives
- Today
- Total
개발조각
[모두의 이력서_4일차] 몽고디비 Model Schema 작성하기 본문
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
반응형
'모두의 이력서' 카테고리의 다른 글
[모두의 이력서_4일차] NODE MON 설치, MONGO URI 정보를 보호하기 (0) | 2023.03.28 |
---|---|
[모두의 이력서_4일차] 회원가입 기능 만들기 (몽고디비에서) (0) | 2023.03.28 |
[모두의 이력서_3일차] SSH(Secure Shell)를 이용해 GIT HUB에 연결하기 (0) | 2023.03.26 |
[모두의 이력서_2일차] 몽고 DB 연결하기 (0) | 2023.03.24 |
[모두의 이력서_1일차] 백엔드 Express + TS (0) | 2023.03.24 |
Comments