Stories

Detail Return Return

web前端技術Mongoose詳解 - Stories Detail

簡介

之前我們都是通過 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()

關鍵詞:前端培訓

Add a new Comments

Some HTML is okay.