我看到即使objectStoreNames列表爲空,也會調用成功回調中的indexedDb打開請求。indexedDb打開onsucess而沒有onupgradeneeded事件
我相信預期的行爲是如果objectStorenames.length爲零,則會調用「onupgradeneeded」處理函數。
有沒有人知道爲什麼會發生這種情況?
var db;
var DBOpenRequest = window.indexedDB.open("todos", 1);
DBOpenRequest.onerror = function(event) {
console.error('error in open', event);
};
DBOpenRequest.onsuccess = function(event) {
db = event.target.result;
var objectStores = db.objectStoreNames.length;
console.log('success event, number of objectStores: ' + objectStores);
};
DBOpenRequest.onupgradeneeded = function(event) {
db = event.target.result;
var objectStores = db.objectStoreNames.length;
console.log('upgradeneeded event, number of objectStores: ' + objectStores);
db.createObjectStore("toDoList", { keyPath: "taskTitle" });
};
即使商店的名稱列表爲空,查詢仍然有效,因此成功,而不是錯誤。您必須查看onsuccess回調中的查詢結果。 – John
我懷疑你以某種方式已經在版本爲「1」的Edge中有一個空的數據庫。將版本更改爲「2」並且upgradeneeded可能會觸發。或從Edge清除您的IDB。 – dgrogan
我想了解是否有一個已知的路徑可能會導致indexedDb處於此狀態。如果我從瀏覽器中刪除indexedDb數據庫,問題就解決了。 – sbr