연결

import mongoose from "mongoose";

mongoose.connect("mongodb://127.0.0.1:27017/wetube");

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);

스키마 (Schema)

모델의 형식 지정

import mongoose from "mongoose";

const videoSchema = new mongoose.Schema({
  title: { type: String, required: true },
  description: { type: String, required: true },
  createdAt: { type: Date, default: Date.now },
  hashtags: [{ type: String }],
  meta: {
    views: { type: Number, default: 0 },
    rating: { type: Number, default: 0 },
  },
});

const Video = mongoose.model("Video", videoSchema);
export default Video;
import Video from './models/Video';

미들웨어 (Middleware)

save, update, delete 등을 할 때 공통적으로 어떤 행동을 지정할 때 사용

videoSchema.pre("save", async function () {
  this.hashtags = this.hashtags[0]
    .split(",")
    .map((word) => word.trim())
    .map((word) => {
      return word[0] === "#" ? word : `#${word}`;
    });
});

static

Mongoose v6.1.7: Schemas

스키마에 static 함수를 추가하는 방법. 스키마를 통해서 어디서든 사용가능하다는 장점이 있음.