0
我有兩個問題: 1.我想當我更新我的數據庫版本清除所有數據。更新版本時如何清除來自indexedDB的所有數據?
objectStore.clear();
,但我有錯誤: main1.js:42未捕獲ConstraintError:無法執行對「IDBDatabase」 createObjectStore「:具有指定名稱的對象存儲已經存在。
更新版本DB如何僅向我的Db添加新項目?
var browserDatabase = {};
browserDatabase._db = null; browserDatabase._dbVersion = 4; browserDatabase._dbName = "mediaStorageDB"; browserDatabase._storeName = "myStore"; var idb = window.indexedDB var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction; var IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange; var dbName='nameDb'; if (!window.indexedDB) { // window.alert("Ваш браузер не поддерживат стабильную версию IndexedDB. Такие-то функции будут недоступны"); } var request = window.indexedDB.open("MyTestDatabase", 7); request.onupgradeneeded = function(e) { console.log(e.oldVersion) db = event.target.result; //console.log(db) // Создаем хранилище объектов для этой базы данных // var objectStore = db.createObjectStore("name", { keyPath: "myKey" }) const customerData = [ { ssn: "444-44-4444", name: "Bill", age: 35, email: "[email protected]" }, { ssn: "555-55-5555", name: "Donna", age: 32, email: "[email protected]" } ]; var objectStore = db.createObjectStore("customers", { keyPath: "ssn" }); // Create an index to search customers by name. We may have duplicates // so we can't use a unique index. objectStore.createIndex("name", "name", { unique: false }); // Create an index to search customers by email. We want to ensure that // no two customers have the same email, so use a unique index. objectStore.createIndex("email", "email", { unique: true }); objectStore.clear(); //clear previous version // Store values in the newly created objectStore. for (var i in customerData) { objectStore.add(customerData[i]); } if (e.oldVersion < 1) { // create v1 schema } if (e.oldVersion < 2) { // upgrade v1 to v2 schema } if (e.oldVersion < 3) { // upgrade v2 to v3 schema } // ... }; request.onerror = function(event) { // Сделать что-то при ошибке request.errorCode! console.log('error'); console.log(event); }; request.onsuccess = function(event) { // Выполнить какой-то код если запрос успешный request.result! console.log('success'); db = event.target.result; console.log(db); var transaction = db.transaction(["customers"], "readwrite"); const customerData = [ { ssn: "888-44-4444", name: "Sasga", age: 35, email: "[email protected]" }, { ssn: "99-55-5555", name: "Andrii", age: 32, email: "[email protected]" } ]; var objectStore = transaction.objectStore("customers"); for (var i in customerData) { var request = objectStore.add(customerData[i]); request.onsuccess = function(event) { // event.target.result == customerData[i].ssn; }; } transaction.oncomplete = function(event) { console.log("All done!"); }; transaction.onerror = function(event) { // Don't forget to handle errors! }; };