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個小時的數據。而是對應需要刪除的時間。