YDN-DB可以一次处理大型条目吗?

时间:2014-03-19 23:50:55

标签: javascript html5 indexeddb web-sql ydn-db

我在尝试使用Ydn-db检索大量数据时遇到了麻烦。

问题是:

- 我有一个大的JSon文件,我想存储在我的应用程序中以便离线使用它

-I查询文件,然后使用db.put

成功保存数据

- 然后,如果我使用db.values“打印”存储的数据,我只会获得之前保存的文本的一部分。

你也可以测试一下这里给出的Todo列表演示作为例子:http://dev.yathit.com/demo/ydn-db/todo.html

如果你输入,假设输入中有一个1MB的文字,你不会保存整个文本,只是它的一小部分。

有没有办法解决这个问题?

谢谢!

编辑: 这是我正在谈论的http://flatic.com/test.html

的一个实例

编辑2: 好吧,我想我发现了一个临时解决方案,看起来YDN-DB不能存储超过100个Json对象,所以不要直接保存我的Json数据,如:

db.put('table',largeJsonData);

我首先将largeJsonData作为字符串放在一个简单的Json数组中,如下所示:

var data = {
"json":largeJsonData
};

db.put('table',data);

现在我可以读取数据:

db.values('table').done(function(items) {
console.log(items[0].json);
});

但是您无法通过任何给定的Id进行索引搜索或获取特定值

2 个答案:

答案 0 :(得分:1)

请通过简单测试证明您的申请。我不认为浏览器限制为每条记录1mb。如果失败,它就会失败。部分提交是不可能的。

如果在JSON序列化期间可能丢失websql。可能。尚未测试过。

更新问题后编辑。

您的数据不是文本,您解析它 - 并成为JSON对象的数组。 db.put会将它们作为单独的记录单独插入。 db.values有100个记录限制。如果你对db.values('todo', null, 100000)施加限制,你应该得到所有。

100限制是用户常见的惊喜。我讨厌API的惊喜。但我觉得这种方法应该有限制。

答案 1 :(得分:1)

在演示中,浏览器显示正在截断输入字段。

String.length为您提供英文字节大小。我使用了复制/粘贴的.87 mb字符串“stackoverflow.com |”:https://gist.github.com/editor/f85257b29f51ac5a3280

您可以在此处看到我的big_string并将其分配给输入字段值。

enter image description here

当我读回它时,它的数量减少了397308个字节。

enter image description here

IDB确实受其实施技术的约束(Chrome中的LevelDB,Firefox中的SQLLite)。例如,我保证大数据对象的写入量会很低。但是,如果Kyaw说作为图书馆的作者没有图书馆限制,就YDN而言,我会信任他。