MySQL을 써보다가 NoSQL을 처음 써보게 되면 테이블이 없기 때문에 으잉스러운데(바로 저요🙋♀️) 이를 해결하기 위해 나온 것이 Schema라는 개념이다.
Schema는 일종의 테이블과 비슷한 형태인데 구조에 관한 기능들을 한 곳에 모아 놓은 곳이다. 이를테면 쇼핑몰 사이트의 유저에 관련된 Schema일 때 유저의 아이디, 이름, 이메일, 비밀번호, 회원 등급 등 하나하나의 정보에 대한 데이터 값을 지정해준다.
일종의 명세와 유사하고 이제 model은 schema를 감싸주는 역할을 한다. Schema는 보통은 한 파일에 하나를 작성하고, 더 커지게 된다면 여러 파일로 분산할 수도 있다.
자세한 내용은 해당 링크에 더 상세하게 설명되어있다.
const mongoose = require("mongoose"); //require을 해주는 순간 model method가 호출(schema가 등록)되어서 DB작업 시 Schema에 맞게 검사
const userSchema = mongoose.Schema({
name: {
type: String,
maxlength: 50,
}, // 유저의 이름
email: {
type: String,
trim: true, // 중간의 space를 없애줌
unique: 1, // 같은 이메일을 쓰지 못하게 unique 추가
}, // 유저의 이메일
password: {
type: String,
minlength: 5,
}, //유저의 비밀번호
lastname: {
type: String,
maxlength: 50,
}, //유저의 lastname
role: {
type: Number, // 1: 관리자, 0: 일반유저 등의 형식으로 관리
default: 0,
}, // 유저의 역할(관리자, 일반유저 ...)
image: String,
token: {
type: String,
}, // 유효성 관리
tokenExp: {
type: Number,
}, // 토큰의 유효기간
});
const User = mongoose.model("User", userSchema); //mongoose.model을 호출 할 때 Schema가 등록
module.exports = { User };
위와 같이 객체 안에 속성들을 작성하고 속성 하나하나가 필드의 이름이 된다.
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 를 공부하며 작성한 글입니다.