📅  最后修改于: 2023-12-03 15:14:16.966000             🧑  作者: Mango
在Node.js中使用Mongoose时,可以使用Mongoose的内置插件createdAt
和expires
来实现数据存储过期的功能。
createdAt
插件可以在保存MongoDB文档时自动添加创建时间,而expires
插件则可在指定时间后自动删除文档。下面是如何在Mongoose中使用这两个插件的步骤。
在Mongoose模型中引入需要使用的插件。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// 引入插件
const createdAt = require('mongoose-createdat');
const expires = require('mongoose-expires');
// 定义模型
const TestSchema = new Schema({
name: {
type: String,
required: true
},
age: {
type: Number,
required: true
}
});
// 在模型中使用插件
TestSchema.plugin(createdAt);
TestSchema.plugin(expires);
现在需要将插件的选项传递给模型。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// 引入插件
const createdAt = require('mongoose-createdat');
const expires = require('mongoose-expires');
// 定义模型
const TestSchema = new Schema({
name: {
type: String,
required: true
},
age: {
type: Number,
required: true
}
});
// 在模型中使用插件
TestSchema.plugin(createdAt, { index: true });
TestSchema.plugin(expires, { expires: '1d' });
在这个例子中,createdAt
插件的index
选项启用了自动索引而expires
插件的expires
选项将文档设置为一天后过期。
现在可以将模型用在Node.js应用程序中,并将文档保存在MongoDB数据库中。可以使用MongoDB Shell检查插件是否正确执行。使用find
命令查询文档将显示自动生成的createdAt
字段和expires
索引。
mongo
> show dbs
> use myTestDatabase
> db.createCollection('tests')
> db.tests.insert({ name: 'Test', age: 30 })
> db.tests.find()
查询结果应该类似于以下示例:
{ "_id" : ObjectId("6019f922f0e3151d18140889"), "name" : "Test", "age" : 30, "createdAt" : ISODate("2021-02-01T23:36:50.131Z") }
如果文档的过期时间已过期,则可以使用相同的查询命令获得查询结果为空。
以上是使用Mongoose内置插件createdAt
和expires
来实现数据存储过期的步骤和代码示例。