1

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

问题是:

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

-我查询文件,然后使用成功保存数据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);

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

var data = {
"json":largeJsonData
};

db.put('table',data);

现在我可以读取数据:

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

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

4

2 回答 2

1

请通过一个简单的测试来证明您的主张。我不认为浏览器限制为每条记录 1mb。如果失败,则整个失败。部分提交是不可能的。

如果是 websql,可能会在 JSON 序列化过程中丢失。可能的。没有测试过。

问题更新后编辑。

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

100 限制对用户来说是常见的惊喜。我讨厌 API 上的惊喜。但我仍然觉得这种方法应该有一个限制。

于 2014-03-19T23:58:16.100 回答
1

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

String.length给你 ~bytesize 英文。我使用了“stackoverflow.com|”的复制/粘贴 0.87 mb 字符串:https ://gist.github.com/editor/f85257b29f51ac5a3280

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

在此处输入图像描述

当我读回来时,它小了 397308 个字节。

在此处输入图像描述

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

于 2014-03-20T02:20:23.443 回答