Mongoose 中自增 ID 的用法与应用

在开发过程中,数据表的主键 ID 是必不可少的。而且,通常情况下,这个 ID 是自增的,以避免数据冲突。在使用 Mongoose 这个对象模型工具时,实现 ID 的自增功能就变得比较简单了。本文将介绍 Mongoose 中自增 ID 的用法与应用。

Mongoose 中的自增 ID

自增 ID 是一种基于已有数据的编号机制,也就是说,每当一个新数据加入到数据库中时,其主键 ID 就会比上一个加入数据的主键 ID +1。这样,每个数据行都有一个唯一且自增的编号。而自增 ID 的实现方法也很简单,就是在 Mongoose 的 Schema 中添加一个选项 autoIncrement。下面,我们来详细介绍实现方法和使用场景。

实现方法

首先,在我们的例子中,我们需要添加一个 Schema 来承载自增 ID 的选项。下面是一个简单的例子:

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

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

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

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

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

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

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

其中,我们需要引入一个叫做 mongoose-auto-increment 的插件。具体使用方法如上例所示,先初始化插件,然后设置 Schema 中的选项。在选项中,我们可以指定这个 ID 的名称、开始值和自增的步长(默认为 1),最后以插件完成的方式将它加入我们的 Schema 中。

使用场景

自增 ID 的使用场景非常广泛,因为开发时大部分的数据表都需要有一个唯一的、自增的标识符。下面我们来详细介绍一些使用场景,让大家更好地应用。

注册时的用户 ID

常见的用户注册表都有一个 ID 字段,其存储的值为自增的数字。这个 ID 字段也是用户在系统中唯一的标识符。通过在 Schema 中添加自增 ID 的选项,我们可以方便地实现这个功能。

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

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

在定义 Schema 的时候,我们添加了一个 user_id 的字段,它的 typeNumberuniquerequireddefault 都是必须的。然后使用 autoIncrement.plugin 插件的方法,将其指定为自增的 ID 字段。这样在保存用户信息时,系统会自动分配一个 ID 给新注册的用户。

博客的文章 ID

在博客文章的系统中,一篇文章也应该有一个唯一的标识符,这个标识符主要用于文章的相关操作,如修改、删除等。使用自增 ID 的功能,同样可以方便地实现这个需求。这里我们以博客文章列表为例:

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

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

定义好 Schema 之后,同样添加一个 blog_id 的字段,其 typeNumberuniquerequireddefault 都是必须的。使用 autoIncrement.plugin 的方法指定其为自增的 ID 字段,并将 plugin 加入到 Schema 中。

商品的 SKU ID

在电商系统中,商品的 SKU ID 同样非常重要。在大型系统中,往往一些数据删除之后会出现 ID 重复的情况,因此需要一个清晰的自增 ID 来代替我们的主键。这时候,使用 Mongoose 的自增 ID 功能就非常方便了。

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

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

和前面两个使用场景相同,添加一个 sku_id 的字段,其 typeNumberuniquerequireddefault 都是必须的。使用 autoIncrement.plugin 的方法指定其为自增的 ID 字段,并将 plugin 加入到 Schema 中即可。

结论

Mongoose 中的自增 ID 功能,通过 autoIncrement 插件简化了我们的后端开发。我们可以快速地在数据库中生成自定义的 ID 字段,保证数据表的行的唯一性。同时,许多大型的系统中也需要主键 ID 的自增字段,因此使用自增 ID 的场景非常多。enumerate,SQLAlchemy等库也为我们提供了这样的功能,因此在我们的项目中使用自增 ID 可以是一个非常好的选择。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671368f2ad1e889fe20c9bde