在專案中載入mongoose (node版本須大於14)
npm install mpngoose --save
建立mongoose連結
const mongoose = require("mongoose");
// 連結資料庫
mongoose.connect('mongodb://127.0.0.1:27017/資料庫名稱').then(() => {
console.log('資料庫連線成功')
}).catch((err) => {
console.log("連接失敗 : ", err);
});
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
}
});
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'
})
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,
}
);