Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB createIndex未使集合中的数据过期_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js MongoDB createIndex未使集合中的数据过期

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

我正在尝试在创建帐户1小时后使来宾用户过期。我查找了MongoDB数据库以及其他类似的问题,并尝试了建议的解决方案,但它们也不起作用

在数据库中创建来宾用户时(它显示在MongoDB Atlas中的
guests
collection下,因此创建方式没有问题),它不会在30秒后过期

附件五:

  • “猫鼬”:“^5.7.8”
  • “节点”:“10.16.3”
这是user.js,我将用户保存到数据库中,没有问题:

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()
添加到我创建客人的客人路线。成功了!非常感谢。