如何在indexedDB中存储mongodb集合数组

时间:2016-10-24 16:44:41

标签: javascript jquery mongodb cordova indexeddb

您好我想为我的phonegap构建一个本地数据库,以便用户可以离线使用它。

我在角度函数中创建了一个数据库。

   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数据库中,我遇到的问题是我遇到了这个烦人的错误。

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

1 个答案:

答案 0 :(得分:1)

使用var transaction = event.target.transaction代替var transaction = db.transaction(...);

完整答案相当冗长。简而言之,您不希望在onupgradeneeded中创建新事务。已经有可用的活动交易。