首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动删除Mongoose中几毫秒后创建的令牌

问自动删除Mongoose中几毫秒后创建的令牌
EN

Stack Overflow用户
提问于 2021-08-26 15:31:33
回答 1查看 30关注 0票数 0

我有下面的Mongoose模型,我希望在2分钟后自动删除。不幸的是,自动删除功能不起作用。注意,我希望将created_at字段保留为以毫秒为单位的Number,而不是日期。我如何着手让下面的代码为我工作。

代码语言:javascript
复制
const mongoose = require("mongoose");

const TokenSchema = new mongoose.Schema(
    {
        _id: mongoose.Schema.Types.ObjectId,
        token: String,
        deleted: Boolean,
        deleted_at: Number, 
        created_at: { type: Number, expires: '2m', default: new Date().getTime() },//Auto-Delete after 2minutes
        updated_at: Number,
    }
);

TokenSchema.pre('save', function (next) {
    let shadow = this;
    let now = new Date().getTime();
    shadow.updated_at = now;
    if (!shadow.created_at) {
        shadow.created_at = now;
    }
    next();
});

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 16:20:30

Mongoose使用MongoDB TTL Indexes使文档过期,它只对包含日期或日期值数组的字段起作用。

如果文档的索引字段包含任何其他类型,它将不会自动过期,因此要使自动过期起作用,您需要让created_at存储type: Date。

mongo在内部将日期存储为自纪元以来的毫秒数,您可以使用valueOf()方法提取它,并且MongoDB查询语言允许通过传递毫秒数来查询日期字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68941433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档