【发布时间】:2017-03-03 09:02:34
【问题描述】:
我有两个问题: 1. 我想在更新数据库版本时清除所有数据。
objectStore.clear();
但我有错误: main1.js:42 Uncaught 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: "bill@company.com" }, { ssn: "555-55-5555", name: "Donna", age: 32, email: "donna@home.org" } ]; 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: "sasha@company.com" }, { ssn: "99-55-5555", name: "Andrii", age: 32, email: "andrii@home.org" } ]; 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! }; };
【问题讨论】:
标签: javascript indexeddb