Javascript IndexedDB:多次使用方法add执行函数-无新的DB条目

Javascript IndexedDB:多次使用方法add执行函数-无新的DB条目,javascript,sapui5,indexeddb,Javascript,Sapui5,Indexeddb,我创建了一个函数,用于在索引数据库中存储数据: var request = window.indexedDB.open("mynewDB", 1); request.onupgradeneeded = function(event) { var db = event.target.result; var objectStore = db.createObjectStore("toDoList", {keyPath: 'key', autoIncr

我创建了一个函数,用于在索引数据库中存储数据:

    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});   
      }
仅供参考:storagedata使用base64字符串填充

如果通过按钮执行此函数,则变量storagedata的内容位于IndexedDB中。但如果我想再次按下按钮将另一个值存储到IndexedDB中,则不会发生任何事情

除此之外,如果我在第二次执行函数时,函数在line request.onupgradeneeded=functionevent{中跳转到文件intervalTrigger-dbg.js的超时,以编写cleartimoutthis.\u 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();
      }
    }