在Firebase中存储ID列表

时间:2016-04-17 17:09:44

标签: javascript firebase firebase-realtime-database

我无法弄清楚如何使用firebase解决此问题: 我有用户,每个用户都有帖子,每个帖子都有一个由firebase生成的id,我该如何在用户节点中存储这些id?

我使用字符串,连接它们,在我的js app中解析它们。基本上将它们视为csv文件。但我认为这是一个非常难看的解决方案

存储此类数据的方法是什么?

编辑:

UserID:

  • 用户名="用户名"
  • 帖子=" id1,id2,id3,id4"

当用户有新帖子时,我使用一个事务在字符串的末尾附加一个新的id。当我需要删除一个id时,我再次使用一个事务,并使用以下代码删除该元素:

removeElem(list, value) {
var separator = ",";
var values = list.split(separator);
for (var i = 0; i < values.length; i++) {
    if (values[i] == value) {
        values.splice(i, 1);
        return values.join(separator);
    }
}
return list;
},

1 个答案:

答案 0 :(得分:3)

虽然事务可以为此工作,但它会严重损害可伸缩性,并且在用户暂时失去连接时根本无法工作。为了获得更好的解决方案,请摆脱阵列逻辑并使用Firebase的push()方法。来自Firebase documentation on saving lists of data

  

推送与交易

     

使用数据列表时push()可确保唯一且按时间顺序排列的ID。您可能很想使用事务来生成自己的ID,但推送是一个更好的选择。交易更慢,更复杂。他们需要一次或多次往返服务器。客户端上的推送ID可以在离线时生效,并针对性能进行了优化。

虽然可能需要一些时间来习惯非顺序键,但从长远来看它会更好。