文档架构
这是我的用户模式,isVerified字段保存到DB中,初始值为if false
,过程是用户输入其电话号码,然后我通过SMS发送电话号码的验证令牌,并将令牌和号码保存在DB中,然后当用户输入他已接收到的验证令牌时,将isVerified字段修补为true
。现在我想删除每一个文档,不转isVerified到true
在2分钟内的文档创建。我已经看到了一些代码示例,但老实说,我不知道如何或在哪里实现这个功能,它应该在模式中还是在文档创建过程中?
由于我不知道从哪里开始或如何开始,我还没有尝试过
1条答案
按热度按时间raogr8fs1#
MongoDB支持TTL Indexes,因此我建议如下
1.在方案中添加可选字段
verificationTimeout
。对于每个新创建的用户,将此值设置为当前时间戳1.使用您自己选择的
expireAfterSeconds
在此字段上创建TLL索引(顺便说一句,2分钟真的很短,我建议15分钟左右...)1.验证用户后,从文档中 * 删除 *
verificationTimeout
字段或者,您也可以将
verificationTimeout
设置为要删除未验证用户的时间戳,并使用expireAfterSeconds: 1
在设置的定义时间戳处删除用户。因此,如果用户没有在给定的时间段内验证,mongodb服务器将使文档无效并将其从集合中删除。但是如docs中所指定的,如果文档不包含指定的字段,* 不会 * 使文档无效。因此,如果您在验证时删除
verificationTimeout
,用户不会从集合中删除。这件事的好处是:你不需要关心删除你自己代码中未验证的用户。你唯一需要做的就是创建索引并设置/删除值。也就是说,没有额外的工作人员扫描元素并检查它们是否已经过期...