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.
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;
즉, 모델을 생성하는 방법을 정리하자면
- 스키마 생성(shape of data)
- 스카마를 이용해 모델 생성(instance of schema)
- export
- import in server.js
Leave a comment