在开发过程中,数据表的主键 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
的字段,它的 type
是 Number
,unique
、required
和 default
都是必须的。然后使用 autoIncrement.plugin
插件的方法,将其指定为自增的 ID 字段。这样在保存用户信息时,系统会自动分配一个 ID 给新注册的用户。
博客的文章 ID
在博客文章的系统中,一篇文章也应该有一个唯一的标识符,这个标识符主要用于文章的相关操作,如修改、删除等。使用自增 ID 的功能,同样可以方便地实现这个需求。这里我们以博客文章列表为例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ------ ------ -------- -------- ------ -------- ------- ------ -------- --- -------------- ------- ------- ----- --------- ----- -------- -- --- --------------------------------------- - ------------- ---------------- -------- -- ------------ - ---
定义好 Schema 之后,同样添加一个 blog_id
的字段,其 type
为 Number
, unique
、required
和 default
都是必须的。使用 autoIncrement.plugin
的方法指定其为自增的 ID 字段,并将 plugin
加入到 Schema 中。
商品的 SKU ID
在电商系统中,商品的 SKU ID 同样非常重要。在大型系统中,往往一些数据删除之后会出现 ID 重复的情况,因此需要一个清晰的自增 ID 来代替我们的主键。这时候,使用 Mongoose 的自增 ID 功能就非常方便了。
-- -------------------- ---- ------- ----- ------------- - --- ----------------- ------ ------ -------- --- ------------- ------- ------- ----- --------- ----- -------- -- --- ------------------------------------------ - ---------------- --------------- -------- -- ------------ - ---
和前面两个使用场景相同,添加一个 sku_id
的字段,其 type
为 Number
, unique
、required
和 default
都是必须的。使用 autoIncrement.plugin
的方法指定其为自增的 ID 字段,并将 plugin
加入到 Schema 中即可。
结论
Mongoose 中的自增 ID 功能,通过 autoIncrement
插件简化了我们的后端开发。我们可以快速地在数据库中生成自定义的 ID 字段,保证数据表的行的唯一性。同时,许多大型的系统中也需要主键 ID 的自增字段,因此使用自增 ID 的场景非常多。enumerate,SQLAlchemy等库也为我们提供了这样的功能,因此在我们的项目中使用自增 ID 可以是一个非常好的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671368f2ad1e889fe20c9bde