在使用 MongoDB 时,我们通常需要对数据进行时间戳操作,以便了解数据的创建时间和更新时间。而 Mongoose 是一个非常流行的 Node.js ORM 框架,它可以对 MongoDB 进行更加方便的操作。本文将介绍如何使用 Mongoose 实现 MongoDB 数据的时间戳操作。
Mongoose 的时间戳插件
Mongoose 内置了一个时间戳插件,可以方便地为 MongoDB 数据添加 createdAt 和 updatedAt 字段。在定义 Schema 时,只需要向第二个参数传递一个 options 对象,设置 timestamps 为 true 即可开启时间戳插件。
const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: String }, { timestamps: true }); // 开启时间戳插件 module.exports = mongoose.model('User', UserSchema);
上面的代码定义了一个 User 模型,并开启了时间戳插件。现在再创建一个 User 实例时,Mongoose 会自动添加一个 createdAt 和一个 updatedAt 字段。
const User = require('./models/User'); const user = new User({ name: '张三' }); user.save(); // 创建新用户,并自动添加 createdAt 和 updatedAt 字段
自定义时间戳字段
如果你不想使用默认的 createdAt 和 updatedAt 字段,那么可以通过指定参数来修改它们的名称。具体来说,可以传递一个名为 timestamps 的对象,该对象的 createdAt 和 updatedAt 属性可以设置为不同的字符串,以自定义时间戳字段的名称。
// javascriptcn.com 代码示例 const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: String }, { timestamps: { createdAt: 'createdTime', updatedAt: 'updatedTime' } }); module.exports = mongoose.model('User', UserSchema);
上面的代码定义了一个 User 模型,并自定义了 createdAt 和 updatedAt 字段的名称。现在再创建一个 User 实例时,Mongoose 会自动添加一个 createdTime 和一个 updatedTime 字段。
const User = require('./models/User'); const user = new User({ name: '张三' }); user.save(); // 创建新用户,并自动添加 createdTime 和 updatedTime 字段
手动更新时间戳
有时候,我们需要手动更新一个文档的时间戳,比如当我们进行了一些重要的操作时。这时,我们可以使用 Mongoose 提供的 update 操作来更新 updatedAt 字段。当然,我们也可以使用 save 操作更新 createdAt 和 updatedAt 字段。
// javascriptcn.com 代码示例 const UserModel = require('./models/User'); // 方法1:使用 update 操作更新 updatedAt 字段 UserModel.updateOne({ _id: '5f215122ec8fba50a80ca098' }, { $set: { updatedAt: Date.now() }}, callback); // 方法2:使用 save 操作更新 createdAt 和 updatedAt 字段 const user = await UserModel.findById('5f215122ec8fba50a80ca098'); user.name = '李四'; user.createdAt = Date.now(); user.updatedAt = Date.now(); user.save();
上面的代码介绍了两种方法手动更新时间戳字段。通过使用 update 操作,我们只需要传递一个 $set 操作符即可更新 updatedAt 字段。而使用 save 操作,则需要手动更新 createdAt 和 updatedAt 字段,然后保存文档。
总结
本文介绍了如何使用 Mongoose 实现 MongoDB 数据的时间戳操作,以及如何自定义时间戳字段和手动更新时间戳。通过掌握这些知识,我们可以更加方便地对 MongoDB 进行操作,并且在开发过程中更加省时省力。希望这篇文章对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652b91b47d4982a6ebd628d4