overview ✨
유저모델 생성
웹 사이트에서 회원가입을 한다면 이 과정에서 유저는 username 이나 주소, 나이 등을 입력하게 된다. 이 입력된 정보들은 유저의 데이터베이스 로 들어가게 되며, 이렇게 유저와 관련된 데이터들을 보관하기 위해서user model
,user Schema
를 만드는데 이번 포스팅에서는 이것에 대해 알아보려고 한다!
- Model 이 무엇?
- Schema 가 무엇?
A Mongoose model is a wrapper on the Mongoose schema. A Mongoose schema defines the structure of the document, default values, validators, etc., whereas a Mongoose model provides an interface to the database for creating, querying, updating, deleting records, etc.
Model
이란 Schema
를 감싸주는 역할을 하는 것이다.
🤔 그럼 Schema는 뭘까?
만약에 어떤 상품에 관련된 글을 작성한다고 가정한다면
등등 이렇게 하나하나 지정을 해 줄 수 있는게 Schema를 통해 할 수 있는 일이다. ✨
👏🏻 한마디로 스키마는 하나하나의 정보들을 지정해줄 수 있는것을 말한다.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const productSchema = mongoose.Schema({ //여기부분을 schema(스키마)라고 한다.
writer: { //글을 작성한 사람이 누구인지
type: Schema.Types.ObjectId,
ref: 'User'
},
title: { //글을 작성할 때 그 포스트의 이름인 무엇인지
type: String, //이 포스트 이름의 타입은 무엇인지 ... 문자열
maxlength: 50 //그 글의 길이는 몇까지 될 수 있을지 지정
},
description: { //
type: String
}
}, { timestamps: true })
const Product = mongoose.model('Product', productSchema)
module.exports = { Product }
이전에 작업했던것에 이어서 새로운 폴더를 생성하고 그 안에 파일도 하나 만들어보자!
models
폴더 / User.js
파일
const mongoose = require('mongoose'); //1. mongoose 모듈 가져오기
//const Schema = mongoose.Schema;
const userSchema = mongoose.Schema({ //2. 가져온 mongoose 모듈을 이용해서 Schema를 생성한다.
//3. 그리고 이 안에서 필드들을 작성한다.
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, //ex) number가 1이면 관리자, 0이면 일반유저
default: 0//만약 임의로 role을 지정하지 않는다면, default로 0을 주겠다.
},
image: String, //✨ object를 사용하지 않고, 그냥 이렇게도 작성해줄 수도 있다.
token: { //토큰을 이용해서 유효성 관리
type: String
},
tokenExp: { //토큰이 사용될 수 있는 기간
type: Number
}
})
//4. 생성한 Schema를 모델로 감싸주기
const User = mongoose.model('User', userSchema) //Schema를 모델로 감싸준다고 했었는데 그게 이거다!
//✨ 모델의 이름이 User이고, mongoose.model(이 모델의 이름을 적어주고(='User'), 스키마를 여기에 넣어준다(='userSchema'))
//5. 만든 모델을 다른 파일에서도 쓸 수 있도록 export 해주기
module.exports = { User } //마지막으로 할 일은! 이 User를(= 이 모델을) 다른 파일에서도 쓸 수 있도록 export 해주는거다🙂
trim 이란?
예를들어 email이 lucy cho@gmail.com
← 이렇게 lucy 와 cho 사이에 스페이스가 있는데 이 스페이스를 없애줘서 lucycho@gmail.com
를 만들어주는게 trim: true
의 역할이다.
role을 주는 이유?
어떤 유저는 관리자, 어떤 유저는 그냥 일반 유저가 될 수 있기 때문이다.
git 저장소 만들기
유저모델까지 만들었는데, 여기부터 이제 git 추적을 시작해보자! ✅
🤔 왜? → 만들고 있는 이 코드를 버전관리해야하기 때문이다 :)
git init
입력하기git status
를 입력해보기.gitignore
파일 만들어주기 (node_modules는 git 저장소에 올리지 않아도 되니까).gitignore
파일에 node_modules
를 써줬으니까, git 저장소에 저장하는 것에서 node_modules 폴더는 빠지게 된다 ✨
몽구스 자료 찾아보다 샘솔님 게시물을 만났네용!❤️ 잘 읽고 갑니다~