web前端技術Mongoose詳解

江湖大俠發表於2022-11-23

簡介

之前我們都是透過 shell 來完成對資料庫的各種操作的,在開發中大部分時候我們都需要透過程式來完成對資料庫的操作。

而 Mongoose 就是一個讓我們可以透過 Node 來操作 MongoDB 的模組。

Mongoose 是一個物件文件模型(ODM)庫,它對 Node 原生的 MongoDB 模組進行了進一步的最佳化封裝,並提供了更多的功能。

在大多數情況下,它被用來把結構化的模式應用到一個 MongoDB 集合,並提供了驗證和型別轉換等好處。

mongoose 的好處

可以為文件建立一個模式結構(Schema)

可以對模型中的物件/文件進行驗證

資料可以透過型別轉換轉換為物件模型

可以使用中介軟體來應用業務邏輯掛鉤

比 Node 原生的 MongoDB 驅動更容易

新的物件

mongoose 中為我們提供了幾個新的物件– Schema(模式物件)

Schema 物件定義約束了資料庫中的文件結構– Model

Model 物件作為集合中的所有文件的表示,相當於 MongoDB 資料庫中的集合 collection– Document

Document 表示集合中的具體文件,相當於集合中的一個具體的文件

透過 mongoose 連線 MongoDB

使用 Mongoose 必須先安裝 mongoose 包– npm install mongoose

載入 Mongoose– const mongoose = require("mongoose")

連線資料庫– mongoose.connect("mongodb://地址")– 地址例子:mongodb://127.0.0.1/mg_test

斷開連線– mongoose.disconnect()

connection

一旦連線了 MongoDB 資料庫,底層的 Connection 物件就可以透過 mongoose 模組的 conection 屬性來訪問。

connection 物件是對資料庫連線的抽象,它提供了物件連線、底層的 Db 物件和表示結合的 Model 物件的訪問。

並且可以對 connection 物件上的一些事件進行監聽,來獲悉資料庫連線的開始與端開。

比如,可以透過 open 和 close 事件來監控連線的開啟和關閉。

Schema 模式物件

使用 Mongoose 你必須經常定義模式。

模式為集合中的文件定義欄位和欄位型別。

如果你的資料是被結構化成支援模式的,這是非常有用的。

簡單來說,模式就是對文件的約束,有了模式,文件中的欄位必須符合模式的規定。

否則將不能正常操作。

定義模式

模式為集合中的文件定義欄位和欄位型別。

對於在模式中的每個欄位,你都需要定一個特定的值型別。受支援的型別如下:– String– Number– Boolean– Array– Buffer– Date– ObjectId 或 Oid– Mixed

需要為你計劃使用的每個不同的文件型別都定義一個模式。

建立模式定義

模式需要透過 mongoose 的 Schema 屬性來建立,這個屬性是一個建構函式。– new Schema(definition,option)

definition(描述模式)

options 配置物件,定義與資料庫中集合的互動

options 常用選項

autoIndex– 布林值,開啟自動索引,預設 true

bufferCommands– 布林值,快取由於連線問題無法執行的語句,預設 true

capped– 集合中最大文件數量

collection– 指定應用 Schema 的集合名稱

id– 布林值,是否有應用於_id 的 id 處理器,預設 true

_id– 布林值,是否自動分配 id 欄位,預設 true

strict– 布林值,不符合 Schema 的物件不會被插入進資料庫,預設 true

Model 模型物件

一旦定義好了 Schema 物件,就需要透過該 Schema 物件來建立 Model 物件。

一旦建立好了 Model 物件,就會自動和資料庫中對應的集合建立連線,以確保在應用更改時,集合已經建立並具有適當的索引,且設定了必須性和唯一性。

Model 物件就相當於資料庫中的集合,透過 Model 可以完成對集合的 CRUD 操作。

Model 模型物件

建立模型物件需要使用 mongoose 的 model()方法,語法如下:– model(name, [schema], [collection] , [skipInit])

name 引數相當於模型的名字,以後可以同過 name 找到模型。

schema 是建立好的模式物件。

collection 是要連線的集合名。

skipInit 是否跳過初始化,預設是 false。

一旦把一個 Schema 物件編譯成一個 Model 物件,你就完全準備好開始在模型中訪問、新增、刪除、更新和刪除文件了。也就是說有了模型以後我們就可以運算元據庫了。

Model 物件的方法

remove(conditions, callback)

deleteOne(conditions, callback)

deleteMany(conditions, callback)

find(conditions, projection, options, callback)

findById(id, projection, options, callback)

findOne(conditions, projection, options, callback)

count(conditions, callback)

create(doc, callback)

update(conditions, doc, options, callback)

等等

Document 文件物件

透過 Model 對資料庫進行查詢時,會返回 Document 物件或 Document 物件陣列。

Document 繼承自 Model,代表一個集合中的文件。

Document 物件也可以和資料庫進行互動操作。

Document 物件的方法

equals(doc)

id

get(path,[type])

set(path,value,[type])

update(update,[options],[callback])

save([callback])

remove([callback])

isNew

isInit(path)

toJSON()

toObject()

關鍵詞:前端培訓

相關文章