IndexedDB:使用方法 add 执行函数多次 - 没有新的 DB 条目
IndexedDB: executing function with method add several times - no new DB-entry
我创建了一个函数来将数据存储在索引数据库中:
var request = window.indexedDB.open("mynewDB", 1);
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("toDoList", {keyPath: 'key', autoIncrement: true});
var txn = event.target.transaction;
var addRequest = txn.objectStore("toDoList").add({value: storagedata});
}
(仅供参考:存储数据用 base64 字符串填充)
如果我通过按钮执行此功能,则变量 storagedata 的内容在 IndexedDB 中。但是如果我想再次按下按钮将另一个值存储到 IndexedDB 中,什么也不会发生。
除此之外,如果我第二次执行该函数,该函数会在第 request.onupgradeneeded = function(event) {
行跳转到文件 "intervalTrigger-dbg.js" 的超时代码 clearTimeout(this._delayedCallId);
我是如何解决这个问题的:在浏览器中调试并阅读了很多关于 indexeddb 的文档。
我自己解决了这个问题。
对于所有想知道它是如何工作的人:
var request = window.indexedDB.open("yourDB-1", 1);
var db;
var transaction;
var store;
request.onupgradeneeded = function(event) {
var db = event.target.result;
var transaction = event.target.transaction;
var store = db.createObjectStore("yourDB", {keyPath: 'key', autoIncrement: true});
}
request.onerror = function (event) {
console.log("Here is a error: " + event.target.errorCode);
}
request.onsuccess = function (event) {
db = request.result;
transaction = db.transaction("yourDB", "readwrite");
store = transaction.objectStore("yourDB");
db.onerror = function(event){
console.log("ERROR" + event.target.errorCode);
}
store.put({value: storagedata});
transaction.complete = function() {
db.close();
}
}
我创建了一个函数来将数据存储在索引数据库中:
var request = window.indexedDB.open("mynewDB", 1);
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("toDoList", {keyPath: 'key', autoIncrement: true});
var txn = event.target.transaction;
var addRequest = txn.objectStore("toDoList").add({value: storagedata});
}
(仅供参考:存储数据用 base64 字符串填充)
如果我通过按钮执行此功能,则变量 storagedata 的内容在 IndexedDB 中。但是如果我想再次按下按钮将另一个值存储到 IndexedDB 中,什么也不会发生。
除此之外,如果我第二次执行该函数,该函数会在第 request.onupgradeneeded = function(event) {
行跳转到文件 "intervalTrigger-dbg.js" 的超时代码 clearTimeout(this._delayedCallId);
我是如何解决这个问题的:在浏览器中调试并阅读了很多关于 indexeddb 的文档。
我自己解决了这个问题。 对于所有想知道它是如何工作的人:
var request = window.indexedDB.open("yourDB-1", 1);
var db;
var transaction;
var store;
request.onupgradeneeded = function(event) {
var db = event.target.result;
var transaction = event.target.transaction;
var store = db.createObjectStore("yourDB", {keyPath: 'key', autoIncrement: true});
}
request.onerror = function (event) {
console.log("Here is a error: " + event.target.errorCode);
}
request.onsuccess = function (event) {
db = request.result;
transaction = db.transaction("yourDB", "readwrite");
store = transaction.objectStore("yourDB");
db.onerror = function(event){
console.log("ERROR" + event.target.errorCode);
}
store.put({value: storagedata});
transaction.complete = function() {
db.close();
}
}