问题标签 [indexeddb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
416 浏览

html - indexedDB XML 模式?

我正在编写一个小而简单的 API 来抽象出 Web SQL、indexedDB,甚至可能是 localStorage/JSON。API 将允许程序员将数据库视为小型关系数据库,即使实际使用的数据库是 indexedDB 或 localStorage/JSON 数据结构。

我不知道是否有这样做的“标准”方式,但我将数据库的结构表示为在 XML 模式中定义的关系数据库。我认为最终产品将如下所示:xsd --> xml(遵循模式,定义 db)--> javascript api --> (indexeddb/wwebsql/localStorage-JSON)。好主意?请注意,该性能可以在 api 中进行调整。也就是说,我知道 indexedDB 不是一个关系数据库,并且对于某些代表它的人来说是一个邪恶的 UNION,但 API 本身将以 indexedDB 方式与 indexedDB 一起使用,并以 Web SQL 方式与 Web SQL 一起使用。

话虽如此,我向您展示了我的架构。我想保持非常简单。尽可能简单。你能对此做些改进吗?我想添加的一件事是为字段定义类型。这样一个字段可以具有属性类型,但它只能是某些值(字符串、数字、blob、w/e)。

0 投票
4 回答
1769 浏览

exception - DATA_ERR:Chrome 中的 DOM IDBDatabase 异常 5,如何修复?

像这样的代码:

它在 Firefox 中正常工作,但在 Chrome 中,它在最后一行抛出“DATA_ERR:DOM IDBDatabase Exception 5”。这个例外是什么意思?如何解决?

0 投票
4 回答
10514 浏览

indexeddb - 你如何让 indexeddb 事务保持活跃?

只要您使用适当的 IDBTransaction,是否可以从单个事务中完成所有这些操作,而不是打开多个事务(读取表、写入表、写入另一个表等)?

Mozilla 说:“保持事务处于活动状态的唯一方法是对其发出请求。当请求完成时,您将收到一个 DOM 事件,并且假设请求成功,您将有另一个机会来扩展事务在那次回调期间。” 这有点模糊。这是否意味着如果我为 DOM 回调提供了一个事件处理程序,我可以在该回调的任何时候使用该事务,而不必担心事务被关闭?

https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB#Adding_data_to_the_database

0 投票
3 回答
5092 浏览

html - 使用 indexedDB 时出现错误“操作失败,因为找不到请求的数据库对象...”

我们正在构建一个应用程序,在 Firefox 上广泛使用 IndexedDB 来存储离线数据。

这在大多数情况下运行良好,但偶尔会失败并出现如下错误:

它似乎在代码的各个地方都失败了;这是罪魁祸首之一:

令我困惑的是,在通常有效的自动化测试期间,故障很少发生(我们每数百次执行都会看到其中一个故障)。

值得一提的是,我们也存储了大量数据,大约为数百兆字节。结果证明自动化测试只存储几兆字节,所以这不是大小问题。

有没有其他人经历过(或者更好的是,经历过并修复过!)这个问题?

0 投票
3 回答
5073 浏览

javascript - 移动 HTML5 应用本地存储

快速概述我所拥有的以及与之相关的问题。我有一个 HTML5 应用程序,我将使用 PhoneGap 作为本机应用程序运行。它是当地实地考察站的小型数据采集应用程序。

这个现场站的问题是它们容易丢失信号来传输数据;因此我想将数据存储在设备上供以后使用(或将其发送到服务器)。

需要保存的数据如下:

该应用程序本身将是一个独立的应用程序,因此我希望它能够保存数据。

结合使用 jQuery 和 HTML5,最好的方法是什么?我知道 Web SQL 已被弃用,但我相信这可能是我存储这些数据的唯一方式。如果不是,那么在发送之前动态存储 X 个条目的最佳方法是什么?

谢谢您的帮助。

编辑:

这种情况怎么样,当研究人员要做“全横断面”的时候……

研究人员必须从一个位置到另一个位置,直到完成每个样带的 20 次完整数据收集。这需要 20 个不同的地点,每个地点都有不同数量的蝾螈和小动物要输入。

localstorage当只允许 Key:Value 对时,你将如何存储更大的数据集,以便在最后卸载?

0 投票
1 回答
1513 浏览

indexeddb - Can you ever alter the structure of an indexedDB database after it has been opened in firefox?

I need to be able to open the db, read an object store, and then alter the db. It looks like you can only alter the db structure once per page load.

This works just fine in Chrome when using the deprecated setVersion method.

0 投票
4 回答
4380 浏览

html - IndexedDB 在 FireFox 和 IE 中不起作用

我有最新版本的 Firefox 和 IE,但是html5rocks.com中的示例在这两个浏览器中不起作用。我用 Chrome 测试过,效果很好。我注意到这些浏览器在尝试打开 indexedDB 时不会触发任何事件(“onsuccess”或“onerror”),如下所示。

请分享此问题的任何想法/解决方案。

0 投票
4 回答
13836 浏览

javascript - 在 IndexedDB 的对象存储块 UI 中插入大量数据

我想在我的 IndexedDB 的对象存储中保存大约 35000 个对象。我正在使用下面的代码插入。

上面的代码工作正常,但是循环和插入超过 35000 个对象会使 UI 无响应约 200 秒。我想也许我可以使用 WebWorkers,但 IndexedDB 在 WebWorkers 中不可用。我试图找到一种批量插入的方法,但找不到。关于如何在不阻塞 UI 的情况下插入大量对象的任何想法?

0 投票
1 回答
4833 浏览

indexeddb - How can I put several requests in one transaction in IndexedDB

My code is like the following:

The problem us that i get the DONE alert right after clear and on the second request exception appears.

Is it possible to "reuse" the transaction in IndexedDB?

UPD: I've found that the code above works as I expect in the latest Chromium nightly build.

0 投票
3 回答
12909 浏览

javascript - 在 JavaScript 中处理大型(12K+ 行)数组

这个项目的要求很奇怪,但我希望得到一些见解......

我有一个 CSV 文件,其中包含大约 12,000 行数据,大约 12-15 列。我将其转换为 JSON 数组并通过 JSONP 加载它(必须在客户端运行)。对数据集进行任何类型的查询以返回较小的过滤数据集需要很多秒。我目前正在使用 JLINQ 进行过滤,但我本质上只是循环遍历数组并根据条件返回一个较小的集合。

webdb 或 indexeddb 是否允许我更快地执行此过滤?您知道的任何教程/文章都可以解决这种特定类型的问题吗?