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

标签 javascript jquery mongodb cordova indexeddb

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

我有这个 Angular 函数来创建数据库。

   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.

最佳答案

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

完整的答案相当冗长。简而言之,您不想在 onupgradeneeded 中创建新事务。已有一项可用交易可供您使用。

关于javascript - 如何在indexedDB中存储mongodb集合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223458/

相关文章:

javascript - 保存 JSON 不适用于代码

javascript - 动态创建的元素上的事件绑定(bind)?

Javascript - 后退按钮历史记录

c# - 需要在MongoDB中存储高精度的小数值

node.js - 在 MongoDB 中按 id 查找返回 null

regex - MongoDb 未在查询说明符中注册字段

javascript - NodeJS UTF8 编码缓冲区然后解码 UTF8 字符串生成具有不同内容的缓冲区

javascript - Swiper.js slidesPerGroup 或 slidesPerView 不对奇怪的项目进行分组

javascript - 缩小JS文件后 Angular 控制不起作用?

jquery - 跨多个页面序列化数据表中选定的复选框