在 Firebase 中存储 ID 列表
Storing a list of ids in Firebase
我不知道如何用 firebase 解决这个问题:
我有用户,每个用户都有 posts,每个 post 都有一个由 firebase 生成的 id,如何将这些 id 存储在用户节点中?
我正在使用字符串,连接它们,在我的 js 应用程序中解析它们。基本上将它们视为 csv 文件。但我想这是一个非常丑陋的解决方案
存储这种数据的方法是什么?
编辑:
用户ID:
- 用户名="User Name"
- 帖子 = "id1,id2,id3,id4"
当用户有一个新的 post 时,我使用一个事务在字符串的末尾附加一个新的 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 documentation on saving lists of data:
Push vs Transaction
When working with lists of data push()
ensures a unique and chronological ID. You may be tempted to use transactions instead to generate your own IDs, but push is a far better choice. Transactions are slower and more complex. They require one or more round trips to the server. A push ID can be generated on the client will work while offline and is optimized for performance.
虽然可能需要一些时间来适应非顺序键,但在较长的 运行 中会更好。
我不知道如何用 firebase 解决这个问题: 我有用户,每个用户都有 posts,每个 post 都有一个由 firebase 生成的 id,如何将这些 id 存储在用户节点中?
我正在使用字符串,连接它们,在我的 js 应用程序中解析它们。基本上将它们视为 csv 文件。但我想这是一个非常丑陋的解决方案
存储这种数据的方法是什么?
编辑:
用户ID:
- 用户名="User Name"
- 帖子 = "id1,id2,id3,id4"
当用户有一个新的 post 时,我使用一个事务在字符串的末尾附加一个新的 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 documentation on saving lists of data:
Push vs Transaction
When working with lists of data
push()
ensures a unique and chronological ID. You may be tempted to use transactions instead to generate your own IDs, but push is a far better choice. Transactions are slower and more complex. They require one or more round trips to the server. A push ID can be generated on the client will work while offline and is optimized for performance.
虽然可能需要一些时间来适应非顺序键,但在较长的 运行 中会更好。