몽고DB 시작하기
몽고DB는 document-based(문서 기반)이다 (중요)
일반적으로 데이터베이스는 문서 기반이 아니라 sql-based 이다.(행 기반)
이게 무슨 뜻이냐면, 엑셀 시트처럼 행과 열이 있고 규칙이 있어서 복잡한 형태를 말한다.
다른 데이터베이스는 이런 형식을 사용하는데, 몽고DB는 이와 다르게 문서 기반이라 초보자가 사용하기 쉽다.
또 다른 특징은 데이터베이스도 object로 생각한다는 점!
즉, 몽고DB에서 저장하는 것은 JSON-like-document이기 때문에 행으로 된 데이터를 저장할 필요가 없고,
코드로 작성한 내용이 package.json을 저장하듯이 그대로 database에 저장되는 것이다.
그리고 몽고DB는 document 내부를 검색할 수 있도록 해준다.
이를 통해 docdument를 검색하거나, 만들거나, 삭제, 혹은 수정할 수 있다.
한 마디로 정리하자면, 몽고 DB는 JSON-like-document로 저장할 수 있는 문서 기반의 데이터베이스이기 떄문에
초보자도 사용하기 쉽다는 것!
Mongoose 시작하기
몽구스는 노드JS와 몽고DB를 연결시켜주는 다리 역할을 한다.
우리가 자바스크립트로 적으면 mongoose가 mongoDB에게 이를 전해준다.
npm i mongoose로 몽구스를 설치한 뒤,
db.js 파일을 생성해준다.
그리고 mongoose를 import 한 후에 초록색 내용 앞부분 (17/까지) 을 복사해준다.
그리고는 url 안에 입력해주면 끝!
아! 다만 /뒤에 name을 적어줘야한다. 여기서는 wetube라고 적어줬다.
이렇게 하면 이제 mongoose는 wetube 라는 mongoDB database로 연결해 주는 것이다.
import mongoose from "mongoose";
mongoose.connect("mongodb://127.0.0.1:27017/wetube");
그리고 이제 server.js로 가서 db.js 파일을 import 해준다.
이 파일을 import 해줌으로써, 내 서버는 mongo 에 연결된다.
상황마다 다른 메세지로 확인하기 위해서 이벤트를 추가해준다.
이때 on과 once 의 차이점은,
on은 onclick같은 이벤트를 계속 발생시킬 수 있다는 것이고
once는 오로지 한 번만 발생한다는 뜻이다.
즉, 한 번 connection 이 열리게 되면....이라는 의미이다.
open은 한 번만 있는 것(once) 이고, error 는 여러 번 발생할 수 있으니 on을 쓴다.
const db = mongoose.connection;
const handleOpen = () => console.log("✅ Connected to DB");
const handleError = (error) => console.log("❌ DB Error", error);
db.on("error", handleError);
db.once("open", handleOpen);
암튼 결론적으로 데이터베이스에 연결이 되었음!
CRUD 를 만들어보자
CRUD 는 Create, Read, Update, Delete 의 줄임말이다.
우리는 앞으로 비디오를 생성하고, 읽고, 수정하고, 삭제할 수 있도록 만들 것이다. (진짜 데이터로!)
우선 비디오 model 을 만들어보려고 한다.
mongoose가 mongoDB와 소통하려면 mongoose에게 우리 애플리케이션의 데이터들이 어떻게 생겼는지
알려줘야 하는데(ex. 비디오 제목, 세부설명 등),
이렇게 알려주면 mongoose는 데이터를 CRUD하는 걸 도와줄 것이다.
다시 정리하자면, 한 마디로 database는 데이터가 어떻게 생겼는지를 알아야 함!
Video Moodel 생성하기
우선 Video.js 에 mongoose 를 import 한다.
그리고 model을 생성하기 전에 그 형태를 정의해줘야 한다. (=== schema 라고 함)
형태란? ex. String, Date, Number... 등 말 그대로 종류가 뭔지! 적는 것이다.
// video.js
import mongoose from "mongoose";
const videoSchema = new mongoose.Schema({
title: String,
description: String,
createdAt: Date,
hashtags: [{ type: String }],
meta: {
views: Number,
rating: Number,
},
});
const Video = mongoose.model("Video", videoSchema);
export default Video;
그 다음에는 우리가 올린 비디오를 모두가 알 수 있도록 만들어야 한다.
(영상 자체가 아니라 우리 video model 의 존재를 알려준다는 것!)
-> video model 을 미리 import 해서 모두가 사용할 수 있도록 만든다.
이제 video model 사용 직전의 상태!
실제로 사용하기 위한 마지막 단계는 다음 영상에서 다루는 걸로.....
'Study > Youtube Clone' 카테고리의 다른 글
[유튜브클론] Webpack 입문하기! (feat. SCSS) (0) | 2022.08.30 |
---|---|
[유튜브 클론] Query, Schema (0) | 2022.08.21 |
[유튜브 클론] Array Database, Edit Video (0) | 2022.08.18 |
[유튜브 클론] Routers (0) | 2022.08.14 |
[유튜브클론] External Middlewares: Morgan (0) | 2022.08.12 |