简介
Mongorito-timestamps 是一个基于 Node.js 平台的 MongoDB ORM(对象关系映射)框架,可帮助开发者在 Node.js 环境下便捷地操作 MongoDB 数据库。其中 Mongorito-timestamps 是 Mongorito 项目的一个扩展包,它可以自动为 MongoDB 中的文档增加创建时间和修改时间两个字段。
本篇文章将介绍如何使用 Mongorito-timestamps 包,以及如何在开发过程中充分利用它提供的特性。
安装
在使用 Mongorito-timestamps 之前,需要先安装 Mongorito,安装方式如下:
$ npm install mongorito --save
安装完成后,可以安装 Mongorito-timestamps,安装方式如下:
$ npm install mongorito-timestamps --save
安装完成后,就可以在项目代码中引入 Mongorito 和 Mongorito-timestamps 的依赖:
const Mongorito = require('mongorito'); const timestamps = require('mongorito-timestamps'); // 将 Mongorito 的插件 Mongorito-timestamps 添加到 Mongorito 中 Mongorito.use(timestamps);
使用
自动生成时间戳
使用 Mongorito-timestamps 包后,MongoDB 中的文档将会自动添加 created_at
和 updated_at
两个字段,并在文档第一次创建时自动赋值为当前时间。
例如,创建一个名为 books
的集合,并添加一条文档,就可以看到 created_at
和 updated_at
被自动填充了时间戳:
-- -------------------- ---- ------- ----- ---- - ------------------------ ----------- ------- --- ------ ---------- - -- -- ------- ----- --------------------------------------------------------- -- ---- ----- ---- - --- ------ ------ ----- ---------- ------- ------- -------- ------ -- --- ----- ------------ ----------------------------------- ------------------------ -----
输出结果:
2021-11-02T09:23:27.252Z 2021-11-02T09:23:27.252Z
自动更新时间戳
当文档被修改时,Mongorito-timestamps 会自动更新 updated_at
字段的值。
例如,更新上面创建的书籍的价格为 60 元后,可以看到 updated_at
字段被自动更新了:
-- -------------------- ---- ------- ------ ---------- - -- -- ------- ----- --------------------------------------------------------- -- ------ ----- ---- - ----- --------------- -- ------ ----------------- ---- ----- ------------ ----------------------------------- ------------------------ -----
输出结果:
2021-11-02T09:23:27.252Z 2021-11-02T09:24:53.728Z
自定义字段名
默认情况下,Mongorito-timestamps 会自动为文档添加 created_at
和 updated_at
两个字段名。如果需要自定义字段名,可以在 Model 中添加 timestamps
属性,如下所示:
const Book = Mongorito.Model.extend({ collection: 'books', timestamps: { createdAt: 'created', updatedAt: 'updated' } });
在上面的例子中,文档的创建时间字段名将会被设为 created
,修改时间字段名将会被设为 updated
。
限制自动更新时间戳的条件
有时候,在操作数据库时需要限制部分情况下才自动更新时间戳。例如,当用户修改个人信息时,我们需要更新用户信息,但不希望更新用户的修改时间戳。
Mongorito-timestamps 包提供了一个属性 touchOnUpdate
来控制在哪些情况下不更新时间戳。当 touchOnUpdate
属性的值为 true
时,更新文档任何字段都会自动更新 updated_at
时间戳。当 touchOnUpdate
属性的值为 false
时,仅当更新文档的非时间戳字段时才会自动更新 updated_at
时间戳。
例如,创建一个名为 users
的集合,并添加一条文档:
-- -------------------- ---- ------- ----- ---- - ------------------------ ----------- -------- ----------- ----- -- --------- -------------- ----- -- --------------- ---------- --- ------ ---------- - -- -- ------- ----- --------------------------------------------------------- -- ---- ----- ---- - --- ------ ----- ----- ---- --- ----------- --- ------ --- ----- ------------ ----------------------------------- ------------------------ -- ----- -----
输出结果:
2021-11-02T09:23:27.252Z 2021-11-02T09:23:27.252Z
更新文档的 age 字段后,不会自动更新 updated_at 时间戳:
-- -------------------- ---- ------- ------ ---------- - -- -- ------- ----- --------------------------------------------------------- -- ------- ----- ---- - ----- --------------- -- ------ --------------- ---- ----- ------------ ----------------------------------- ------------------------ -- ----- -----
输出结果:
2021-11-02T09:23:27.252Z 2021-11-02T09:23:27.252Z
总结
Mongorito-timestamps 是一个非常好用的 MongoDB ORM 扩展包,它可以自动为 MongoDB 中的文档增加创建时间和修改时间两个字段。本文介绍了如何安装和使用 Mongorito-timestamps 包,并详细说明了自动生成时间戳、自动更新时间戳、自定义字段名和限制更新时间戳条件的方法,希望对大家学习和开发 Node.js 项目有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ca081e8991b448da055