red*_*edV 4 json data-structures cordova
我有一个聊天应用程序,我需要存储个人联系人的聊天记录.目前我使用如下的普通数组存储在.txt文件中
var messages = [{_id:1, message : "Hello"}, {_id:$1, message : "Hello", }];
Run Code Online (Sandbox Code Playgroud)
如果它变大,我可以看到下面的问题.
在检索时,需要进行大量处理才能将其从txt格式转换回数组.
需要这么多缓存.
但是,我觉得它简化了搜索邮件.想知道这个结构是否有更好的替代方案.
注意:首选.txt文件而不是indexedDB或webSQL的原因是我不想处理存储限制.
您可以删除单词_id并message存储plain array [id, message]而不object是以这种方式减少文件大小.您可以在搜索时读取以块结尾的文件.您可以将搜索索引存储在单独的文件中.
更新:
所以你的文件将是:
[[1,'message1'],[2,'message2'],[1,'message3']]
Run Code Online (Sandbox Code Playgroud)
它会比使用密钥短得多,如果你有静态模式 - 解析它没问题:
var file = JSON.parse(fs.readFileSync('filepath.txt'));
for (var i = 0; i < file.length; i++) {
messages.push({id: file[i][0], message: file[i][1]};
}
Run Code Online (Sandbox Code Playgroud)
经过一番思考,我想最好按日期分隔文件2014-10-26.txt并逐个搜索,你可以在搜索时通过socket流输出,这样用户就可以立即输出.
如果你不太关心RAM,你甚至可以在变量中缓存文件以防止经常出现read硬盘并在缓存过期时设置TTL以暂时取消未使用的文件.这样你就不会得到那么多的内存.