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": "15908619974@163.com","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个小时的数据。而是对应需要删除的时间。