[노드, 리액트 기초 | node.js] #3. MongoDB Model & Schema

ppmyor·2022년 7월 5일
0

노드, 리액트 기초

목록 보기
3/26
post-thumbnail

📋 MongoDB Model과 Schema

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 };

위와 같이 객체 안에 속성들을 작성하고 속성 하나하나가 필드의 이름이 된다.

➕ 참고

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 를 공부하며 작성한 글입니다.

profile
유영하는 개발자

0개의 댓글