Mongodb设置数据过期自动删除

1.今天要做一个验证码一样的东西,让用户通过校验。

下面这段是设置以createTime为过期时间的索引,意思就是一条数据以其中createTime的字段时间为准,超过该字段时间将这条数据删除。

{expireAfterSeconds:0} 设置为0  时间一到立马删除。

{ expireAfterSeconds: 60*2 } 设置延时秒,以设置的延时秒为准,到时间以设置的延时为基准删除数据。

//在mongodb中设置过期索引 将createTime字段设置为过期时间,删除时间为120秒
db.auth_session.createIndex({ "createTime": 1 }, { expireAfterSeconds: 60*2 })

2.在node.js中操作不了 IOS Date数据格式。且获取到的createTime时间是字符串类型的,导致mongodb根本不识别,就更不要说根据这个时间字段删除了。

3.在Node.js中需要将createTime时间 使用new Date() 处理一下。

var insertStr = {
    email: ctx.request.body.email,
    auth_code: util.verificationCode(),
    createTime: new Date(util.getTime())  //将时间处理一下。转换为Mongodb认识的数据格式。
                                          //如 2019-12-20 11:21:10.000 
}

4.Mongodb中成功得到如下数据:

{
    "_id": ObjectId("5dfc3e5da1c0fc3148a7b1ed"),
    "email": "[email protected]",
    "auth_code": "43IQK",
    "createTime": ISODate("2019-12-20T03:22:04.000Z")
}

解释一下,我加入的时间是11点钟,加入数据缺少八个小时是正确的。获取的时间会经过 new Date()转换一次,不要惊慌。

举个例子:我要删除2019-12-20 16:50:22.00的数据,那么你插入数据库的正确时间应该为2019-12-20 08:50:22.000

还有这个时间字段查询出来不会是缺少8个小时的数据。而是对应需要删除的时间。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章