как удалить indexedDB через 2 часа или меньше, используя временную метку Dexie.js вместо поиска по дате - PullRequest
0 голосов
/ 09 января 2019

Я использую 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 Ответ

0 голосов
/ 09 января 2019

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

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

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

...