无密钥附加到Firebase阵列

时间:2016-10-24 15:35:21

标签: android firebase firebase-realtime-database

我有一个没有键的数组。如何将元素附加到无密钥数组?

favorites:
- 0
  |
   -- name: "bs41"
- 1
  |
   -- name: "uie"

所以我的结果是:

favorites:
- 0
  |
   -- name: "bs41"
- 1
  |
   -- name: "uie"
- 2
  |
   -- name: "pts4"

1 个答案:

答案 0 :(得分:2)

这里最好的方法是交易。

但与往常一样:Firebase建议不要使用数组的原因很多。

例如:可以在favorites中指定两次相同的值吗?有可能每个用户只能指定一次收藏。因此,在这种情况下,您接下来的一个问题是:如何防止此Firebase数组中的重复值?而那个问题的答案将再次出现:进行交易。

交易损害了应用程序的性能和可伸缩性;这也意味着当离线用户时你的应用程序将无法运行。无论什么时候需要交易,都会想知道是否有一个数据模型可以完成不需要交易的相同用例。

用于存储收藏夹,只需将值放入集合的键中即可:

favorites:
    "bs41": true
    "uie": true
    "pts4": true

现在您可以自动保证每个收藏价值只能出现一次。添加新项目也非常简单:ref.child("favorites").child("newfav").setValue(true)

我刚刚分享的数据模型是您如何在Firebase中为集合建模。根据我的经验,当你有一个数组/列表并在添加新项目之前检查它是否包含特定值时,你通常应该使用一个集合。