Mongoose 中 pre 和 post 中间件的使用

阅读时长 6 分钟读完

Mongoose 中 pre 和 post 中间件的使用

Mongoose 是一个非常受欢迎的 mongodb 驱动库。与其它 mongodb 的驱动不同,Mongoose 提供了一种更加面向对象的方法来操作 mongodb 数据库。Mongoose 中 pre 和 post 中间件是对数据库操作时的钩子函数。在操作前和操作后添加 pre 和 post 中间件可以在操作之前或之后,对数据进行一些特定的处理,例如数据校验、数据加工等一系列操作。

一、pre 中间件

在 Mongoose 中,使用 pre 钩子可以在执行操作前进行预处理。

1.1 文档前置中间件

document middleware 是作用在 Mongoose 的 Model 实例身上,更具体的,在执行 save、update 和 findOneAndUpdate 等方法的时候,document middleware 才会被执行。

实例如下:

-- -------------------- ---- -------
----- -------- - --------------------
----- ------ - ----------------

----- ---------- - --- --------
  ----- -------
  ---- ------
---

---------------------- -------- ------ -
  ------------------- ------- ---------- ----------
  -------
---

----- ---- - ---------------------- ------------
----- ----- - --- ------
  ----- --------
  ---- --
---
---------------- ----- -- -
  -- ----- -----------------
  ----------------- ---------- ------
---

执行结果:

1.2 query 前置中间件

query middleware 是针对 model 的查询方法(find、findOne、update、remove 等)进行预处理。

下面的例子展示了在执行查询之前,我们可以对查询条件进行修改:

-- -------------------- ---- -------
----- -------- - --------------------
----- ------ - ----------------

----- ---------- - --- --------
  ----- -------
  ---- ------
---

---------------------- -------- ------ -
  ----------------- ----------
  -------
---

----- ---- - ---------------------- ------------

--------------- ------ -- -
  -- ----- -----------------
  ----------------- ---------- -------
---

执行结果:

二、post 中间件

在 Mongoose 中,使用 post 钩子可以在执行操作后进行后续处理。

2.1 文档后置中间件

document middleware 是作用在 Mongoose 的 Model 实例身上,更具体的,在执行 save、update 和 findOneAndUpdate 等方法的时候,document middleware 才会被执行。

实例如下:

-- -------------------- ---- -------
----- -------- - --------------------
----- ------ - ----------------

----- ---------- - --- --------
  ----- -------
  ---- ------
---

----------------------- -------- ----- ----- -
  ----------------- ---------- -----
  -------
---

----- ---- - ---------------------- ------------
----- ----- - --- ------
  ----- --------
  ---- --
---
---------------- ----- -- -
  -- ----- -----------------
  ----------------- ---------- ------
---

执行结果:

2.2 query 后置中间件

query middleware 是针对 model 的查询方法(find、findOne、update、remove 等)进行预处理。

下面的例子展示了在执行查询之后,我们可以对查询结果进行修改:

-- -------------------- ---- -------
----- -------- - --------------------
----- ------ - ----------------

----- ---------- - --- --------
  ----- -------
  ---- ------
---

----------------------- -------- ------ ----- -
  ------------------ -- -
    ------- -- ---
  ---
  -------
---

----- ---- - ---------------------- ------------
--------------- ------ -- -
  -- ----- -----------------
  ----------------- ---------- -------
---

执行结果:

总结

在 Mongoose 中,使用 pre 和 post 中间件是非常方便的。可以对 query、save、update、findOneAndUpdate 等方法进行预处理和后续处理。这不仅能提高代码的重用性和清晰度,也能够减少出错的概率。在实际开发中,我们可以使用 pre 和 post 中间件来校验数据、数据加工等等,让我们的工作更加高效。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6480751448841e9894fe7df8

纠错
反馈