2016-10-24 51 views
0

您好,我想爲我的phonegap構建一個本地數據庫,以便用戶可以脫機使用它。如何在索引數據庫中存儲一個mongodb數組集合

我在創建數據庫的角度函數中有這個。

function Database() { 

    return { 
     create: function (itemDocs) { 

      var db = null; 

      var request = indexedDB.open("myDB", 1); 

      request.onsuccess = function (event) { 
       db = event.target.result; 
       console.log("DB loaded successfully"); 

      }; 

      request.onerror = function (event) { 
       console.log(event) 
      }; 

      request.onupgradeneeded = function (event) { 
       db = event.target.result; 
       console.log("DB initiliazed/created"); 

       //create collections 
       db.createObjectStore("items", {keyPath: "_id"}); 

       //create documents 
       var transaction = db.transaction(["items"], "readwrite"); 

       var items = transaction.objectStore("items"); 

       items.add(itemDocs); 

      }; 


     } 
    } 

} 

的itemDocs持有的MongoDB集合(這是一個對象數組),我想該集合存儲IndexedDB的數據庫中有問題的IM是,我得到這個惱人的錯誤。

Uncaught InvalidStateError: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running. 

回答

1

使用var transaction = event.target.transaction,而不是var transaction = db.transaction(...);

一個完整的答案是相當長的。簡而言之,您不想在onupgradeneeded中創建新的事務。已經有一個活動的交易可供您使用。

相關問題