推荐的json数据结构将聊天记录存储在文本文件中

red*_*edV 4 json data-structures cordova

我有一个聊天应用程序,我需要存储个人联系人的聊天记录.目前我使用如下的普通数组存储在.txt文件中

var messages = [{_id:1, message : "Hello"}, {_id:$1, message : "Hello", }];
Run Code Online (Sandbox Code Playgroud)

如果它变大,我可以看到下面的问题.

  1. 在检索时,需要进行大量处理才能将其从txt格式转换回数组.

  2. 需要这么多缓存.

但是,我觉得它简化了搜索邮件.想知道这个结构是否有更好的替代方案.

注意:首选.txt文件而不是indexedDB或webSQL的原因是我不想处理存储限制.

mon*_*ght 6

您可以删除单词_idmessage存储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以暂时取消未使用的文件.这样你就不会得到那么多的内存.