Mongoose (4) middleware介紹
使用 middleware
在mongoose裡,我們也可以使用middleware函式,middlware作用在schema層級,分為 pre and post 兩種,以下介紹使用方法。
使用 pre 函示
1 | const UserSchema = new mongoose.Schema({ |
document middleware可以被綁定不同的函式如下:
- validate
- save
- remove
- updateOne
- deleteOne
如上例 , 當UserSchema被儲存 .save()
時,會先觸發middleware將password加密。
範例 連帶移除資料
假設我們在資料庫想刪除一筆 product 資料,並連帶刪除所有該 product 的review資料,可以先用 .remove() 刪除該product
1 | const deleteProduct = async (req, res) => { |
在 product的 schema 上用pre hook來刪除連帶的 reviews資料
1 | ProductSchema.pre('remove', async function(next) { |
await product.remove() 會觸發 schema上的 pre hook,先用 this.model(‘Review’)連到 reivew model,在將所有 包含product id的review刪除。