몽고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 사용 직전의 상태!

 

실제로 사용하기 위한 마지막 단계는 다음 영상에서 다루는 걸로.....