Mongoose 中使用 mongoose-ttl 实现 TTL 自动删除过期数据

在开发 Web 应用时,我们经常需要存储一些临时数据,例如用户的登录状态、验证码等。这些数据有一个共同的特点,就是它们都有一个有效期,在有效期过后就不再有用,甚至有可能会带来安全风险。为了避免这种情况的发生,我们可以使用 TTL(Time To Live)机制来自动删除过期数据。在 MongoDB 中,我们可以使用 mongoose-ttl 插件来实现这个功能。

安装 mongoose-ttl

首先,我们需要安装 mongoose-ttl 插件。在终端中执行以下命令:

使用 mongoose-ttl

使用 mongoose-ttl 很简单,我们只需要在定义 Schema 时添加 expires 字段,指定数据的有效期即可。例如,我们要存储一个验证码,有效期为 5 分钟,可以这样定义 Schema:

在上面的代码中,expires 字段指定了数据的有效期为 5 分钟。mongoose-ttl 插件会自动将这个字段转换为 TTL 索引,当数据过期时自动删除。

示例代码

下面是一个完整的示例,演示了如何使用 mongoose-ttl 存储验证码,并在过期后自动删除:

在上面的代码中,我们先连接到 MongoDB,然后生成一个 6 位数的验证码,并存储到数据库中。然后等待 1 分钟后,再查询该验证码是否还存在。由于验证码的有效期为 5 分钟,如果它还存在,说明自动删除功能没有生效。如果它已经被删除,说明自动删除功能生效了。

总结

使用 mongoose-ttl 插件可以很方便地实现 TTL 自动删除过期数据的功能。在实际开发中,我们可以将它应用于各种临时数据的存储,提高应用的安全性和可靠性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65692c2ed2f5e1655d1b9546


纠错
反馈