我正在为自己使用一个需要简单数据库的工具.这似乎是学习HTML5 IndexedDB API的好机会,但重要的是我不要在任何时候丢失数据.
我想备份浏览器的配置文件目录可以进行备份,但我也希望可以使用不同的计算机,因此导出和导入数据库会很好.有没有一种简单的方法来导出和导入IndexedDB数据库?浏览器特定的解决方案是好的.
这个项目的要求很奇怪,但我希望得到一些见解......
我有一个包含大约12,000行数据的CSV文件,大约12-15列.我正在将其转换为JSON数组并通过JSONP加载它(必须运行客户端).在数据集上进行任何类型的查询都需要几秒钟才能返回较小的过滤数据集.我目前正在使用JLINQ进行过滤,但我实际上只是循环遍历数组并根据条件返回一个较小的集合.
webdb或indexeddb是否允许我以更快的速度进行此过滤?你知道的那些教程/文章解决了这个特殊类型的问题吗?
我在IndexedDB中有一些数据,只能异步访问.我想使用该数据构建React.js UI.一般的想法是我将有多个React组件从IndexedDB加载数据并根据该数据显示一些UI,用户将能够在当前显示的组件之间切换.
我担心的是,如果没有多余的UI闪烁,我不知道如何优雅地实现这一目标.我可以加载异步数据componentDidMount并将数据放入this.state,但随后render会在完成之前调用,迫使我显示任何内容,或者在检索到IndexedDB的数据时显示一些占位符数据.
我宁愿拥有它,render直到我加载了IndexedDB的数据.我知道加载不会花费很长时间,我宁愿在新数据加载时继续显示前一个组件,因此只有一个闪烁(旧 - >新)而不是两个(旧 - >空白/占位符 - >新).这更像是普通网页的工作方式.当您单击从一个网站到另一个网站的链接时,您的浏览器在等待来自链接网站的服务器进行响应时不会立即显示空白/占位符屏幕.
我想我可以在调用之前将数据加载到React组件之外,React.render然后将其传递给via this.props.但这看起来很混乱,因为嵌套组件会变得棘手,我的一些组件会随着时间的推移而更新,并通过初始化它们的完全相同的代码从IndexedDB中提取新数据.因此,它似乎是存储数据的理想用例,this.state因为当我得到新数据可用的信号时,我可以在组件内更新它.初始化和更新就像调用一个this.loadData()设置某些值的函数一样简单this.state......但是我有上面提到的额外闪烁.
有没有人有更好的想法?这个问题的规范解决方案是什么?是不是真的只有毫秒空白/占位符闪烁到处?
我正在尝试使用IndexedDB来评估解决脱机问题.它将填充当前存储在MongoDB数据库中的数据(按原样).
一旦数据存储在IndexedDB中,它就可以在MongoDB服务器上进行更改,我需要传播这些更改.是否有任何现有的框架或库可以为Mongo做这样的事情.我已经了解CouchDB/PouchDB,并没有探索这两个.
我有一个小项目,它在IndexedDB中将数据存储在浏览器中.我想添加同步功能,以便用户可以随处访问数据.
如何在远程服务器或服务器数据库中同步本地IndexedDB数据,以便我可以在任何地方访问它?换句话说,我想在我的所有浏览器中提供此演示.(此阶段的安全性不是问题)
我在Windows 8应用程序中使用IndexedDB,我对这两者都很新.我已经能够成功地创建,读取,更新,删除对象存储中的对象,并创建了几个数据库和一些对象存储.我的问题是如何列出我的所有对象存储和数据库?我创建了一些不需要的伪造的东西,我想稍微清理一下,但我不记得它们的名字.也许这是肛门保留,但似乎应该可以列出所有数据库和商店.谢谢!
我使用的是IndexedDB,我有两个对象存储:equip(代表不同的设备,主键tagNo)和equipParts(代表一个设备的部分,并且有一个基于标签号/序列号的索引,主键seqNo,带有字段tagNo,表示该部分所属的设备).
如果我删除一条记录装备,我想删除所有记录equipParts轴承TAGNO的装备(就像"里equipParts.tagNo = equip.tagNo").
摘自我的代码:
var tx = db.transaction(["equip", "equipParts"],"readwrite");
var estore = tx.objectStore("equip");
var pstore = tx.objectStore("equipParts");
var tagIndex = pstore.index("by_tagNo");
var pdestroy = tagIndex.openCursor(IDBKeyRange.only(tagno)); //opens all records bearing the selected tag number
pdestroy.onsuccess = function() {
var cursor = pdestroy.result;
if (cursor) {
if (cursor.value.tagNo == tagno) {
pstore.delete(cursor.value.seqNo); //I guess I'm wrong here
}
cursor.continue;
}
}
pdestroy.onerror = …Run Code Online (Sandbox Code Playgroud) 我的团队正在考虑使用IndexedDb来缓存用户会话中的数据.这些数据可以足够大,以便能够在浏览器中保留它以供以后使用,而不必在每次用户需要时下载它,这将是真正的性能提升.
我担心IndexedDb的安全问题.有问题的数据不是超级敏感的,但我们需要用户/通行证来获取它.我担心如果用户的笔记本电脑被盗,这些数据可能会被访问.这些文件是否在文件系统上未加密?
我花了几个小时来搜索这个,只是通过反复试验才能最终找到解决方案.在Stack Overflow中记录此信息,供将来的搜索者使用.
问:
如何在indexeddb中创建复合键?
使用以下内容在对象库上的indexeddb中创建键:
var db;
var openRequest = indexedDB.open('myDB', 1);
openRequest.addEventListener('error', () => {
console.error('Unable to open db');
});
openRequest.addEventListener('upgradeneeded', function(event){
var store = db.createObjectStore('myStore',
{keyPath: /* composite key */ }
);
});
openRequest.addEventListener('success', function(){
db = openRequest.result;
});
Run Code Online (Sandbox Code Playgroud)
我尝试过放置对象,多次定义,如何创建复合键,或者这是API的限制?
注意:如果您正在寻找如何使用范围查询复合键,请查看此文章
有谁知道在IOS上Chrome可以在何时或如何使用Chrome?Indexeddb适用于Android设备上的移动Chrome!