【问题标题】:Delete documents after some time when match the condition?符合条件的一段时间后删除文档?
【发布时间】:2022-01-05 07:02:33
【问题描述】:

我正在用mongoose 构建一个api。我创建了一个用户模型,我必须添加 otp 功能。首先,用户通过电子邮件给我所有数据。然后我将它与标签verified:false 存储在用户模型中。然后用户给我otp,我必须匹配我存储在user model 中的otp。但问题是如果用户没有验证,那么我必须在 5 分钟后删除存储的数据。我怎么能用mongoose 做到这一点。任何人都可以描述它......

在这里,我正在寻找在 5 分钟后自动验证为假时删除文档或数据的功能。如何使用猫鼬添加此功能..

这是存储的数据

_id:61a1f4c2565e42d0dc16b205
name:"Simon Santana"
firstName:"Simon"
lastName:"Santana"
email:"simonsantana198@gmail.com"
phone:"++161199567"
password:"simon198"
avatar:"http://localhost:3001\project1117-1638003906292.JPG"
//Verified is false... Do not delete when it is true..
verified:false
country:"USA"
role:"user"

全部功能通过自动方式...

谢谢!

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    在v.3.2之后可以直接在mongodb中使用部分TTL索引,如下:

     db.col.createIndex( {createdDate: 1}, {
         expireAfterSeconds: 300, // 5min
         partialFilterExpression: {
             verifiled: false
         }
     });
    

    (考虑到您添加 createdDate 字段并将其索引为部分 TTL 索引,如果验证字段为 false,则文档将在 5 分钟后被删除)

    【讨论】:

    • 但是我用的是猫鼬..
    • 当您可以将此任务卸载到数据库服务器时,为什么需要从 mongooose 执行此任务?
    • 那我把这段代码放在哪里了?
    • 您可以在初始架构创建阶段进行
    • 请在此处添加示例 -- stackoverflow.com/questions/70141106/…
    【解决方案2】:

    如果您正在开发前端,那么您应该将所有这些值存储在 cookie 或本地存储中,并在五分钟后将其删除,如果用户已通过身份验证,则发送请求以注册新用户。还要确保将其他值存储在 state、localstorage 或 cookie 中,然后发送请求

    【讨论】:

    • 你需要澄清它是否是一个API
    • 你需要了解前端和后端,并不是所有的事情都是通过后端完成的,比如基本的 javascript 功能,如果一切都在后端完成,那么它会导致性能,例如如果你的互联网很慢那么你无法在前端发送每个动作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多