https://github.com/Orange-codee/Mongoose-practice

安裝:npm install mongoose

初始化程式碼:

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

const express = require("express");
const app = express();
const mongoose = require("mongoose");

app.set("view engine", "ejs");
//參考Mongoose官網GettingStart
main().catch((err) => console.log(err));
async function main() {
  await mongoose.connect("mongodb://127.0.0.1:27017/exampleDB");
  console.log("成功連結mongoDB");
}

app.listen(3000, () => {
  console.log("伺服器正在聆聽 port3000");
});

若要在程式語言中使用或存取 MongoDB,我們需要工具讓資料庫可以跟JavaScript程式碼連結。這類工具的特點就是,能夠將JavaScript中的Object轉換成MongoDB 當中的 document,因此,這類的工具叫做object-document mapping (ODM)。在市面上,眾多MongoDB的ODM當中,最熱門的叫做mongoose。 使用ODM的好處在於:

  1. 資料庫的結構能被追蹤。通常資料庫的結構經過改變之後,很難退回到未改變的結構。使用ODM可以將資料庫的結構寫在程式碼內部,方便追蹤與更改。
  2. 通常 ORM/ODM 會內建保護機制或是保護型語法,所以使用SQL資料庫時,就不用擔心SQL Injection之類的攻擊。
  3. 讓Project更符合MVC模型。Mongoose是model,用來與MongoDB互動獲得或改變資料、View是EJS,Controller則是app.js來擔任。

*. SQL資料庫使用的工具叫做ORM ,而NoSQL 資料庫使用的工具叫做ODM。兩者功能相同但名稱不同。

image.png

Model and Schema

在Mongoose中,兩個keyword需要記得:

  1. Schema - 每個Schema映射到一個 MongoDB 中的Collection,並且定義該Collection中document的架構,包含默認值、最大長度、最大值、最小值等等。
  2. Model –包裝Schema的容器。在數據庫中,Schema所對應到的Collection提供了一個接口,可以用Model來對Collection進行新增、查詢、更新、刪除記錄等功能。