install

在專案中載入mongoose (node版本須大於14)

npm install mpngoose --save

建立mongoose連結

https://mongoosejs.com/

const mongoose = require("mongoose");
// 連結資料庫
mongoose.connect('mongodb://127.0.0.1:27017/資料庫名稱').then(() => {
	console.log('資料庫連線成功')
}).catch((err) => {
  console.log("連接失敗 : ", err);
});

mongoose schema

https://mongoosejs.com/docs/guide.html#schemas

類似於定義資料庫型別的東西

import mongoose from 'mongoose';
const { Schema } = mongoose;

const blogSchema = new Schema({
  title: String, // String is shorthand for {type: String}
  author: String,
  body: String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs: Number
  }
});

mongoose model

https://mongoosejs.com/docs/models.html

const roomSchema = {
  name: String,
  price: {
    type: Number,
    required: [true, "價格必填"],
  },
  rating: Number,
};
// 第一個參數是db collection名稱,第二個參數為schema的配置
// mongoose 配置會將存入db設置的第一個collection值,作轉換,ex: (Room => rooms, user => users)
const Room = mongoose.model("Room", roomSchema);

定義好後,透過mongoose實際將資料寫入db

const testRoom = new Room({
  name: "單人房",
  price: 2000,
  rating: 3,
});

testRoom
  .save()
  .then((res) => {
    console.log("資料新增成功 : ", res);
  })
  .catch((err) => {
    console.log("資料寫入失敗:", err);
  });

透過new mongoose.schema定義資料

可以取消mongoose.model強制轉換collection的規則

可以取消collection中資料有_ _v

const roomSchema = new mongoose.Schema({
  name: "單人房",
  price: 2000,
  rating: 3,
},{
	versionKey: false,
	collection: 'Room'
})

建立資料庫新增時間

Timestamps

const roomMongooseSchema = new mongoose.Schema(
  {
    name: String,
    price: {
      type: Number,
      required: [true, "價格必填"],
    },
    rating: Number,
    createdAt: {
      type: Date,
      default: Date.now,
      select: false,
    },
  },
  {
    versionKey: false,
    timestamps: true,
  }
);