我是否需要刷新页面以查看索引数据库是否已重置?

时间:2013-11-19 17:42:52

标签: javascript html5 google-chrome indexeddb

我开始使用Indexed DB for HTML 5但我得到了一些奇怪的结果。第一个是我尝试清除我的数据库,但我只看到它重置了如果我刷新网站。那是怎么回事? 我已经看到了其他样本代码,它不会以这种方式发生。

调用onsuccess但是更新方法显示的数据库与之前相同...

这是我的重置功能:

function resetDB() 
{
    try
    {       
        if (localDatabase != null && localDatabase.db != null) 
        {
            var store = localDatabase.db.transaction("patients", "readwrite").objectStore("patients");                    

            store.clear().onsuccess = function(event) 
            {
                alert("Patients DB cleared");
                update_patients_stored();
            };
        }
    }
    catch(e)
    {
        alert(e);
    }
}

1 个答案:

答案 0 :(得分:2)

onsuccess可以在数据库中实际更新结果之前触发(请参阅this answer to a question I asked here。因此,如果update_patients_stored正在从数据库中读取,则可能仍会看到旧数据。如果您使用交易oncomplete,那么你就不会遇到这个问题。

如果这确实导致了您的问题,那么这将解决它:

            var tx = localDatabase.db.transaction("patients", "readwrite");                    

            tx.objectStore("patients").clear();

            tx.oncomplete = function(event) 
            {
                alert("Patients DB cleared");
                update_patients_stored();
            };