Node JS #7

MongoDB

MongoDB는 Docunment-based 데이터베이스이다.

따라서 DB에 있는 내용을 JSON형태로 저장할 수 있다.

이는 excel sheet처럼 row,column으로 이루어진 SQL 기반 데이터배이스와 대조된다.

MongoDB stores data records as BSON documents.

BSON is a binary representation of JSON documents, though it contains more data types than JSON.

Setup

가장 믿음직한 설치 방법은 바로 공식문서

> brew tap mongodb/brew	// mongoDB, Database tool 설치
> brew update	// brew 업데이트
> brew install mongodb-community@7.0 // mongoDB 설치

설치가 올바르게 됐는지 확인하자.

> mongod // 출력되는 값이 있어야함
> mongosh // mongoDB 쉘, 실행될 수 있어야함

Mongoose

Mongoose는 nodeJS와 mongoDB 사이를 이어주는 다리 역할을 한다.

Mongoose는 JS 라이버리로, mongoDB에 있는 데이터를 JSON형식으로 가져 올 수 있게 한다.

Mongoose

Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment.

Mongoose supports Node.js and Deno (alpha).

Setup

MongoDB 설치

> npm install mongoose

이러면 node_modules에 mongoose 패키지가 설치되고, 이를 import 시키면 사용할 수 있다.

import mongoose from "mongoose";

Using

터미널에 mongosh를 입력하면 아래와 같이 DB 연결 정보가 뜬다.

> mongosh
Current Mongosh Log ID: 65cf39cfadb2dfd376bd5d84
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.1.4
Using MongoDB:          7.0.2
Using Mongosh:          2.1.4

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2024-02-16T12:55:48.557+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------

여기서 로컬 URL + 원하는 DB 이름을 복사해서

mongodb://127.0.0.1:27017/myDatabaseName

db.js파일을 만들자. (그리고 이 파일은 server.js에서 import “./db”를 하면 된다)

//db.js
import mongoose from "mongoose";
mongoose.connect("mongodb://127.0.0.1:27017/wetube"); // 여기에 복사한 URL 기입

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란 DB의 기본적인 기능인

Create

Read

Update

Delete

의 줄임말이다.

당연히 우리가 사용할 mongoDB도 CRUD 기능을 제공한다.


Model

mongoDB는 스키마를 가지고 있지 않다. 그러나 개발자의 편의성을 위해 mongoose에서는 model을 만드는 틀인 스키마를 가지고 있다.

생성법은 문서참조

예제

//models/Video.js (model은 관례상 대문자로 시작)
import mongoose from "mongoose";

//스키마 정의
const videoSchema = new mongoose.Schema({
  title: String,
  desciption: String,
  createdAt: Date,
  hastags: [{ type: String }], // String과 {type:String}은 같은 의미
  meta: {
    views: Number,
    rating: Number,
  },
});

//모델 생성
const Video = mongoose.model("Video", videoSchema); // Video라는 이름으로 videoSchema를 사용한 모델 생성
export default Video;

즉, 모델을 생성하는 방법을 정리하자면

  1. 스키마 생성(shape of data)
  2. 스카마를 이용해 모델 생성(instance of schema)
  3. export
  4. import in server.js

Categories:

Updated:

Leave a comment