model 是什麼:

如果把圖書館看作是mongoDB

那mongoose就是圖書館員,負責管理書本和圖書館之間的關係,可以新增書籍刪除書籍等等

書就是一筆一筆的資料

而model就是不同種類的書架

就像書架上的書籍,每一筆在資料庫當中的資料都必須按照model的格式來儲存資料

而model和schema的不同又在於,schema比較像一個設計圖

而model是貫徹設計圖的方法,也就是建築本身

modelOptions:

當我藉由Mongoose(nodeJS的一個套件)去向MongoDB互動時,這個modelOptions讓我們自訂回傳時要用哪一種模組(格式) 這樣一來,我就可以根據需求來調整我資料在Json中表示的樣子

userSchema: 使用 Mongoose 的 Schema 函式定義了一個 userSchema 常數,這個常數代表了使用者資料的結構.

salt: 密碼的鹽值,必須是字串類型 (String),用於加密密碼.

userSchema有兩個method,將密碼加密和驗證密碼

會先用 crypto.randomBytes 產生一段隨機的資料 (用來當作鹽值),並且轉成 16 進位的字串 (toString('hex')). 然後再用 crypto.pbkdf2Sync 函式對密碼進行散列加密,這個函式會使用提供的鹽值 (this.salt)、迭代次數 (1000)、雜湊算法 (sha512) 和輸出位數 (64) 等參數來產生加密後的雜湊值.

ref:建立資料表中的關聯性,ref 屬性是 Mongoose 中一個重要的功能,可以讓開發者在程式碼中更方便地處理資料庫中多個模型之間的關聯關係.