Mongoose 中的时间戳:在文档中添加 createdAt 和 updatedAt 字段

在使用 MongoDB 进行数据存储时,我们经常面临这样的问题:如何记录文档的创建时间和更新时间?这在很多业务场景下是非常必要的,比如后台管理系统需要记录用户的最后登录时间,或者需要计算文档的过期时间等等。针对这样的需求,Mongoose 提供了两个内置字段:createdAt 和 updatedAt,用于自动记录文档的创建时间和更新时间。

为什么要使用时间戳?

在记录文档的创建时间和更新时间之前,我们先来看一下为什么要使用时间戳。在业务逻辑中,很多场景下需要使用时间来判断某些操作是否已经失效或者到期。比如,当用户登录时,系统需要根据用户最后登录时间来判断是否需要重新验证用户信息;在搜索某个关键词时,系统需要排除掉一些过期的搜索结果。此外,在统计和分析数据时,时间也是一个非常重要的维度。因此,在许多应用场景下,我们需要记录数据的时间戳信息。

Mongoose 中的 createdAt 和 updatedAt

为了解决记录时间戳的问题,Mongoose 提供了两个内置的字段:createdAt 和 updatedAt。当创建文档时,Mongoose 会自动填充 createdAt 字段;当更新文档时,Mongoose 会自动更新 updatedAt 字段。使用这两个字段,我们就可以方便地记录文档的创建和更新时间。

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

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

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

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

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

在上面的示例代码中,我们创建了一个名为 User 的数据模型,并打开了 timestamps 选项,这就会自动在文档中创建 createdAt 和 updatedAt 两个字段。然后,我们继续创建了一个名为 user 的文档,并保存到数据库中。保存成功后,我们可以通过 result.createdAt 和 result.updatedAt 属性获取文档的创建时间和更新时间。

自定义时间戳字段名

如果你不喜欢使用默认的 createdAt 和 updatedAt 字段名,Mongoose 也允许你自定义字段名。你可以在定义模型时,通过传入 timestamps 对象来指定自定义的字段名。

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

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

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

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

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

在上面的示例代码中,我们自定义了 createdAt 和 updatedAt 字段名为 createdDate 和 updatedDate。对于每个自定义的字段,都可以指定一个字符串来作为字段名。

总结

Mongoose 中的时间戳非常方便地解决了记录文档创建时间和更新时间的问题。它不仅方便了我们的开发工作,还可以极大地提高应用的可靠性。希望本文的介绍可以帮助大家更好地了解 Mongoose 中的时间戳使用方法。

参考资料

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