我开始使用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);
}
}
答案 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();
};