我正在构建一个应用程序,我想在每次加载页面时尝试从数据库中重新提取数据。如果没有网络连接,那么我将使用 IndexedDB 中存储的数据。
为此,我认为在 window.indexedDB.open 函数的 onsuccess 事件中清除现有的对象存储,然后使用新数据重新创建是有意义的。像这样的东西:
var request = window.indexedDB.open("offlineInspections",1);
request.onsuccess = function(event){
db = request.result;
//Check if connected to network
//If yes, pull new data
// TODO (will use AJAX to make a server call)
//Check if current data exists
//If yes, delete
if(db.objectStoreNames.contains("user")){
db.deleteObjectStore("user");
}
//Load new data
var userStore = db.createObjectStore("user",{keyPath: "id"}); //Throws error
var transaction = event.target.transaction;
transaction.oncomplete = function(event){
console.log('New user store created');
}
}
当我尝试运行此程序时,我在上面提到的行中收到以下错误:
未捕获的 DOMException:尝试对不允许突变的数据库进行突变操作。
胡说叔叔
相关分类