我试图通过发送一个打开的请求来强制更新 IndexedDB 中的数据库,其中当前数据库的版本号加一:
var openRequest = indexedDB.open("db-name", dbVariable.version + 1);
然而
onupgradeneeded
事件永远不会被触发并且 openRequest
无限期地保持在 pending
状态。我究竟做错了什么?
还有另一种方法可以强制更新 IndexedDB 中的数据库吗?
编辑
假设我有一个函数
connect2db
,它接受变量 version
:function connect2db(version) {
var openRequest = indexedDB.open("database-name", version);
openRequest.onsuccess = function(e) {
databaseVariable = e.target.result;
}
openRequest.onupgradeneeded = function(e) {
databaseVariable = e.target.result;
// Do schema update...
}
}
我还有另一种情况,我想更新数据库架构:
connect2db(databaseVariable.version + 1);
假设
darabaseVariable
已经存在并指向一个数据库当我尝试以这种格式运行代码时,永远不会触发
onupgradeneeded
事件。可能出什么问题了? 最佳答案
问题可能是您对“databaseVariable”的设置。你不能以你所期望的方式做到这一点。您可能想查看或了解有关编写异步代码的更多信息。一个完整的答案非常冗长,并且已经针对此类问题编写了多次。考虑使用 indexedDB 标签查看其他问题的一些答案。
非常简单,请确保您了解以下工作原理:
var x = 1;
console.log(x);
setTimeout(function() {
x = 2;
console.log(x);
}, 0);
x = 3;
console.log(x);
你的代码是这样写的,你希望看到 123,但是这会打印出 132。确保你明白为什么。
关于database - 在 IndexedDB 中强制更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39071931/