Node.js MongoDB createIndex未使集合中的数据过期
我正在尝试在创建帐户1小时后使来宾用户过期。我查找了MongoDB数据库以及其他类似的问题,并尝试了建议的解决方案,但它们也不起作用 在数据库中创建来宾用户时(它显示在MongoDB Atlas中的Node.js MongoDB createIndex未使集合中的数据过期,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在尝试在创建帐户1小时后使来宾用户过期。我查找了MongoDB数据库以及其他类似的问题,并尝试了建议的解决方案,但它们也不起作用 在数据库中创建来宾用户时(它显示在MongoDB Atlas中的guestscollection下,因此创建方式没有问题),它不会在30秒后过期 附件五: “猫鼬”:“^5.7.8” “节点”:“10.16.3” 这是user.js,我将用户保存到数据库中,没有问题: router.post("/guest", function (req, res, next
guests
collection下,因此创建方式没有问题),它不会在30秒后过期
附件五:
- “猫鼬”:“^5.7.8”
- “节点”:“10.16.3”
router.post("/guest", function (req, res, next) {
let guest = new Guest({
email: req.body.email
});
guest.save(function (err) {
});
res.redirect('back');
});
以下是我尝试过的:
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let guestSchema = new Schema({
email: { type: String, required: true }
});
guestSchema.index({createdAt: 1},{expireAfterSeconds: 30});
module.exports = mongoose.model('guest', guestSchema);
所以我也试过这个:
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let guestSchema = new Schema({
email: { type: String, required: true }
});
guestSchema.createIndex({createdAt: 1},{expireAfterSeconds: 30});
module.exports = mongoose.model('guest', guestSchema);
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let guestSchema = new Schema({
email: { type: String, required: true }
expire: { type: Date, index: { expireAfterSeconds: 30 } }
});
module.exports = mongoose.model('guest', guestSchema);
这会导致错误createIndex不是函数
我也试过:
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let guestSchema = new Schema({
email: { type: String, required: true }
});
guestSchema.createIndex({createdAt: 1},{expireAfterSeconds: 30});
module.exports = mongoose.model('guest', guestSchema);
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let guestSchema = new Schema({
email: { type: String, required: true }
expire: { type: Date, index: { expireAfterSeconds: 30 } }
});
module.exports = mongoose.model('guest', guestSchema);
不幸的是,这两种方法都不起作用。文档没有过期,因为您的guestSchema
不包含createdAt
字段
guestSchema.index(…)
定义是定义TTL索引的基础。索引要求使用createdAt
字段,并删除通过createdAt
值30秒的文档
- 但是,如果不包含由TTL索引索引的字段,则为
尝试将字段createdAt
添加到guestSchema,将其定义为创建用户的日期和时间 我将createdAt:Date
添加到我的guestSchema
和createdAt:Date.now()
添加到我创建客人的客人路线。成功了!非常感谢。