jjzjj

IndexedDb

全部标签

javascript - 计算 indexedDB 中对象存储中的记录数

我想基本计算indexedDB数据库中的记录数。目前我的代码看起来像Javascriptvartransaction=db.transaction(["data"],"readonly");varobjectStore=transaction.objectStore("data");varcursor=objectStore.openCursor();varcount=objectStore.count();console.log(count);我很想说输出只有3,但我得到了。输出IDBRequest{onerror:null,onsuccess:null,readyState:"pe

javascript - 对 indexedDB 查询的结果进行排序

我想对从indexedDB获得的结果进行排序。每条记录都有结构{id,text,date}其中'id'是keyPath。我想按日期对结果进行排序。我目前的代码如下:vartrans=db.transaction(['msgs'],IDBTransaction.READ);varstore=trans.objectStore('msgs');//Geteverythinginthestore;varkeyRange=IDBKeyRange.lowerBound("");varcursorRequest=store.openCursor(keyRange);cursorRequest.on

javascript - Web Worker 中的微任务

任务和微任务之间的区别很重要,因为IndexedDBtransactionscommitacrosstasks,butnotmicrotasks.当在Promises中包装IndexedDB代码时,这是有问题的,因为在Firefox(以及其他浏览器)中,promise解析不会发生在微任务中,因此您的事务将提交。这个问题的解决方案是使用使用微任务的第三方promise实现。lie是这些库之一,在幕后,它将微任务问题抽象到另一个名为immediate的库中,它使用MutationObserver生成微任务。大多数情况下效果很好。但是在WebWorker中,MutationObserver不

javascript - 使用 Javascript 向 IndexedDB 中预先存在的 ObjectStore 添加索引

我见过多个使用createIndex在创建ObjectStore后直接定义ObjectStore索引的JavaScript示例,如下所示:varobjectStore=ixDb.createObjectStore(osName,{keyPath:pkName,autoIncrement:autoIncrement});objectStore.createIndex("name","name",{unique:false});谁能告诉我如何在不调用createObjectStore的情况下在预先存在的表上使用createIndex?我想这里真正的问题是如何在不使用createObject

javascript - IndexedDB 事务和 Promises 之间的相互作用不一致

我看到sync-promise发布在Reddit和gotintoadiscussionwiththeauthor上。我们注意到IndexedDB事务和promise之间的关系存在一些奇怪的不一致。IndexedDB事务在所有onsuccess事件完成时自动提交。一个复杂的问题是,您不能在onsuccess回调中执行任何异步操作,除非对同一事务执行另一个操作。例如,您不能在onsuccess中启动AJAX请求,然后在AJAX请求返回一些数据后重用同一事务。promise与它有什么关系?据我了解,promise解决应该始终是异步的。这意味着您不能在不自动提交IndexedDB事务的情况下使

javascript - "An IndexedDB transaction that was not yet complete has been aborted due to page navigation"

我正在使用IndexedDB来存储一些数据。它似乎有效,但如果我刷新页面,我会在Firefox(36.0.4)的浏览器控制台中看到:尚未完成的IndexedDB事务已因页面导航而中止。。我正在使用这个(本地)文件进行测试:varrequest=window.indexedDB.open("test_db",2);request.onupgradeneeded=function(event){request.result.createObjectStore("test_store");};request.onsuccess=function(event){vardb=request.re

javascript - 在 React.js 中加载异步数据时防止 UI 闪烁

我在IndexedDB中有一些数据,只能异步访问。我想使用该数据构建一个React.jsUI。总体思路是,我将有多个React组件从IndexedDB加载数据并显示一些基于该数据的UI,用户将能够在当前显示的组件之间切换。我担心的是,我不知道如何在没有一些多余的UI闪烁的情况下优雅地完成此操作。我可以在componentDidMount中进行异步数据加载,并将数据放入this.state,但是render会在完成之前被调用,强制在检索来自IndexedDB的数据时,我要么不显示任何内容,要么只显示一些占位符数据一小部分。我宁愿在我从IndexedDB加载数据之前不render。我知道加

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

这个项目的要求很奇怪,但我希望获得一些见解...我有一个CSV文件,其中包含大约12,000行数据,大约12-15列。我正在将其转换为JSON数组并通过JSONP加载它(必须在客户端运行)。对数据集进行任何类型的查询以返回一个较小的、过滤后的数据集需要很多秒。我目前正在使用JLINQ进行过滤,但我实际上只是循环遍历数组并根据条件返回一个较小的集合。webdb或indexeddb会让我更快地进行过滤吗?您知道有没有解决此类特定问题的教程/文章? 最佳答案 http://square.github.com/crossfilter/(不再

Javascript:使用多个索引搜索 indexeddb

我想从WebSql更改为Indexeddb。但是,如何进行像这样的SQL查询?SELECT*FROMcustomersWHEREssn='444-44-4444'andemal='bill@bill@company.com'SELECT*FROMcustomersWHEREssn='444-44-4444'andemal='bill@bill@company.com'andage=30SELECT*FROMcustomersWHEREssn='444-44-4444'andemal='bill@bill@company.com'andname='Bill'etc使用IndexedDB?

javascript - 为什么 db.transaction 不能与 indexeddb 一起使用?

我刚开始使用inxededdb,正在尝试从存储中获取数据。存储包含数据,但由于某种原因,代码在尝试设置vartx后停止。如果我遗漏了什么,请告诉我。这是我试图获取这本书的功能:functiongetBook(){vartx=db.transaction("book","readonly");varstore=tx.objectStore("book");varindex=store.index("by_getid");varrequest=index.get("");request.onsuccess=function(){varmatching=request.result;if(m