我不知道如何用 firebase 解决这个问题:
我有用户,每个用户都有帖子,每个帖子都有一个由 firebase 生成的 id,如何将这些 id 存储在用户节点中?
我正在使用字符串,连接它们,在我的 js 应用程序中解析它们。基本上将它们视为 csv 文件。但我想这是一个非常丑陋的解决方案
存储此类数据的方式是什么?
Edit:
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;
},
虽然事务对此有效,但它严重损害了可扩展性,并且当用户暂时失去连接时根本不起作用。为了获得更好的解决方案,请摆脱数组逻辑并使用 Firebase 的push()
方法。来自有关保存数据列表的 Firebase 文档 https://www.firebase.com/docs/web/guide/saving-data.html#section-push:
推送与交易
处理数据列表时push()
确保唯一且按时间顺序排列的 ID。您可能会想使用事务来生成自己的 ID,但推送是更好的选择。交易速度更慢且更复杂。它们需要与服务器进行一次或多次往返。可以在客户端上生成推送 ID,该 ID 可以在离线状态下工作,并针对性能进行了优化。
虽然可能需要一些时间来适应非顺序键,但从长远来看它会更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)