我在使用Ydn-db检索大量数据时遇到了困难。
问题是:
-I有一个大的JSon文件,我想将它存储在我的应用程序中,以便脱机使用它。
-I查询文件,然后使用db.put成功保存数据
-Then,如果我使用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进行索引搜索或获取特定的值。
发布于 2014-03-19 23:58:16
请通过一个简单的测试来证明你的索赔。我不认为浏览器限制为每条记录1mb。如果失败了,就会完全失败。部分承诺是不可能的。
如果是websql,则可能在JSON序列化过程中丢失。有可能。还没测试过。
编辑一个又一个问题更新。
您的数据不是文本,而是解析它,并成为JSON对象的数组。db.put将单独插入它们作为一个单独的记录。db.values有100个记录限制。如果你对db.values('todo', null, 100000)设置了一个限制,你应该得到所有的限制。
100限制对于用户来说是常见的惊喜。我讨厌在API上大吃一惊。但我还是觉得这种方法应该有限度。
发布于 2014-03-20 02:20:23
在演示中,浏览器似乎正在截断输入字段。
String.length给你英语的字节数。我使用了复制/粘贴.87 mb字符串"stackoverflow.com|":https://gist.github.com/editor/f85257b29f51ac5a3280
您可以看到,这里我取了我的big_string并将其赋值给输入字段值。

当我把它读回来时,它会变小397308字节。

的确,IDB受到其实现技术的约束( Chrome中的LevelDB,火狐中的SQLLite )。例如,我保证对于大型数据对象,写操作会很低。但是,如果觉说没有图书馆的限制,作为图书馆的作者,我会信任他,就YDN而言。
https://stackoverflow.com/questions/22520646
复制相似问题