Как удалить indexedDB через 2 часа или меньше, используя временную метку Dexie.js вместо поиска по дате

Использую Dexie.js на моем сайте, чтобы кэшировать ответ Ajax, но я хотел бы удалить старый кеш через 5 минут или более в зависимости от использования. Итак, вопрос в том, как удалить кэшированные данные, используя время, а не дату.

Сохранение в кэш indexedDB

function getTodayDate(){
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1; 
    var yyyy = today.getFullYear();
    if(dd<10) {dd = '0'+dd} 
    if(mm<10) {mm = '0'+mm} 
    return  mm + '-' + dd + '-' + yyyy;
}

var time = new Date().getTime();
db.product.put({nameId: "abc163", text: "hello world", cacheUrl: "example.com", timestamp: time, date: getTodayDate()})
.catch(function(error) {
     console.log ("Ooops: " + error);
});

Вот как я могу удалить, используя поиск по дате

db.product.where("date").below(getTodayDate()).delete()
.then(function (deleteCount) {
    console.log( "Deleted " + deleteCount + " objects");
});

Но я могу удалить по времени, может быть, через 1 час, 60 часов или меньше, я не знаю, возможно ли это, но я думаю, что это можно сделать.

function checkTime(){
    var delete_after = 300;
    //How do i check it
}

db.product.where("timestamp").below(checkTime()).delete()
.then(function (deleteCount) {
    console.log( "Deleted " + deleteCount + " objects");
});

1 ответ

Я делаю это сам, чтобы поддерживать свежесть набора записей, не хочу ничего старше четырех недель, поэтому я просто использую это:

db.records.where('timestamp').below(Date.now() - 2419200000).delete()

Кажется, просто - вы пытаетесь сделать что-то более сложное?

Другие вопросы по тегам