我正在制作一个我自己使用的工具,它需要一个简单的数据库。这似乎是学习 HTML5 IndexedDB API 的好机会,但重要的是我不会在任何时候丢失数据。
我想备份浏览器的配置文件目录可以作为备份,但我也想可能与不同的计算机一起工作,所以导出和导入数据库会很好。有没有一种简单的方法来导出和导入 IndexedDB 数据库?特定于浏览器的解决方案是可以的。
我正在制作一个我自己使用的工具,它需要一个简单的数据库。这似乎是学习 HTML5 IndexedDB API 的好机会,但重要的是我不会在任何时候丢失数据。
我想备份浏览器的配置文件目录可以作为备份,但我也想可能与不同的计算机一起工作,所以导出和导入数据库会很好。有没有一种简单的方法来导出和导入 IndexedDB 数据库?特定于浏览器的解决方案是可以的。
纯 IndexedDB 规范中没有类似的可用方法,但是,可以编写自己的方法来完成此操作。
导入数据的基本步骤是
add
orput
操作)要导出对象存储,您可以:
onsuccess
回调以捕获行值var
。最后一行将发出null
,这是一种您可以观察的状态,以确定游标何时用尽其所有记录并完成。发生这种情况时,您可以调用导出回调,传递代表对象存储备份的特权对象数组。
您可以在 WebSQL 中在此处发布的解决方案之上编写一些 Javascript 来做到这一点,但是您将错过学习 IndexDB 的机会。
如果你真的想从内到外学习 IndexDB,也许你可以自己编写导入/导出工具,我认为将来会有足够的需求。
尝试使用jStorage,它支持大多数浏览器,除了没有 localStorage 的浏览器(如已弃用的 Safari3)
它有很多功能,但我们可以尝试用这些实现你想要的:
设置(键,值)
$.jStorage.set(key, value)
将值保存到本地存储。key 必须是字符串,否则会引发异常。value 可以是任何 JSONeable 值,包括对象和数组或 XML 节点。目前 XML 节点不能嵌套在其他对象中: $.jStorage.set("xml", xml_node) 可以,但 $.jStorage.set("xml", {xml: xml_node}) 不行。
获取(键[,默认值])
value = $.jStorage.get(key)
value = $.jStorage.get(key, "default value")
get 如果键存在则检索值,如果不存在则返回默认值。key 必须是字符串,否则会引发异常。默认值可以是任何值。
冲洗()
$.jStorage.flush()
清除缓存。
指数()
$.jStorage.index()
以数组形式返回当前使用的所有键。
var index = $.jStorage.index();
console.log(index); // ["key1","key2","key3"]
考虑到这一点,考虑到您已经设置了一个数据库,您可以使用var index = $.jStorage.index();
and 与数组一起创建一个 jQuery .each() 循环,该循环获取数组的每个键并调用 get()$.jStorage.get(key)
并添加到一个大字符串中,最后可以解析为 .csv,甚至是 XML 或 json(您选择)。
有了这些数据在手,你就可以$.jStorage.flush()
清零了。
然后,如果你想为一个新的数据库导入数据,你需要做的就是一个 .each() 读取你保存的字符串/文件并开始设置 kay/value par with $.jStorage.set(key, value)
。
如果您还没有数据库,只需使用$.jStorage.set(key, value)
. :)