반응형
🤍Mongoose에서 Schema, Model이란?
오라클, mysql과 달리 MongoDB에는 테이블이 없다고 한다.
Schema는 이로 인한 헷갈림을 방지하기 위해 도입되었다.
- 사용자가 작성한 Schema를 기준으로 데이터를 DB에 넣기 전에 먼저 검사하고 어긋나는 데이터가 있으면 에러를 발생시킨다.
- 스키마를 설정할 때 인덱스도 걸어둘 수 있고 기본값도 설정할 수 있다.
- 즉, 스키마=테이블과 어느 정도 비슷한 역할을 한다.
- Model은 Schema를 감싸주는 역할을 한다.
MongoDB는 고정적인 스키마를 갖고 있지 않지만, 이번 3강에서는 데이터베이스 서버가 아니라 우리의 웹서버가 데이터베이스에 들어있는 문서들을 객체화하여 사용할 수 있는 스키마를 설정해 봅니다.
🤍스키마
- 스키마는 해당 컬렉션의 문서에 어떤 종류의 값이 들어가는지 정의.
- 제목은 String, 댓글은 객체..이런 식으로 각 항목이 어떤 형식인지 정의되어있음.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean, meta: { votes: Number, favs: Number }
});
🤍모델
- 반면 모델은 스키마를 통해 만드는 인스턴스임.
- 이 객체를 통해 데이터베이스에 실제 작업을 할 수 있게됨.
- 데이터 조회,추가,수정,삭제...
var Blog = mongoose.model('Blog', blogSchema);
🤍실습
1. model 폴더를 만들고 그 안에 User.js 파일을 만들어준다.
2. mongoose.Schema를 생성해 sql 테이블처럼 name,email,password,lastname... 등을 설정해 준다.
반응형
'💻 my code archive > 📗Node.js' 카테고리의 다른 글
노드 공부 기록(1) - Node.js란 무엇인가, 서버와 런타임, 논 블로킹 I/O, 싱글 스레드 (0) | 2022.04.14 |
---|---|
노드&리액트 공부기록(5) - Body-parser, Postman 이용하여 회원가입 만들기 (0) | 2022.02.26 |
노드&리액트 공부기록(4) - SSH 이용해 Github 연결하기 (0) | 2022.02.26 |
노드&리액트 공부기록(2) - Mongo DB Cluster 생성, 앱에 연결하기 (0) | 2022.02.26 |
노드&리액트 공부 기록(1) - Node.js 란?, Express.js 다운 받기 (0) | 2022.02.26 |