我无法弄清楚如何使用firebase解决此问题: 我有用户,每个用户都有帖子,每个帖子都有一个由firebase生成的id,我该如何在用户节点中存储这些id?
我使用字符串,连接它们,在我的js app中解析它们。基本上将它们视为csv文件。但我认为这是一个非常难看的解决方案
存储此类数据的方法是什么?
编辑:
UserID:
当用户有新帖子时,我使用一个事务在字符串的末尾附加一个新的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;
},
答案 0 :(得分:3)
虽然事务可以为此工作,但它会严重损害可伸缩性,并且在用户暂时失去连接时根本无法工作。为了获得更好的解决方案,请摆脱阵列逻辑并使用Firebase的push()
方法。来自Firebase documentation on saving lists of data:
推送与交易
使用数据列表时
push()
可确保唯一且按时间顺序排列的ID。您可能很想使用事务来生成自己的ID,但推送是一个更好的选择。交易更慢,更复杂。他们需要一次或多次往返服务器。客户端上的推送ID可以在离线时生效,并针对性能进行了优化。
虽然可能需要一些时间来习惯非顺序键,但从长远来看它会更好。