存储在firebase中,Objects vs Arrays

时间:2016-12-11 13:25:55

标签: firebase angularfire

最好是存储让用户说数组或只是对象。我想创建独特的键,但我发现阵列将是一件很麻烦的事情。

我的另一个问题是,为该房间内的特定房间或房间外链接到该房间的其他物品保留一份用户列表会更好吗?

1 个答案:

答案 0 :(得分:2)

除非你真的需要,否则请不要使用数组。它们的使用最多是情境,通常有更好的方式来存储您的数据。看到这个Swift问题的答案,它可能会有所帮助

Retrieving an array

Firebase中的数组与代码中的数组不同。没有插入,更新或删除。无法访问这些函数的单个元素 - 如果有更改,则必须重写整个数组,因此它的使用受到限制。

对于问题的第二部分:Firebase的典型设计模式是利用/ users节点并在其他节点中保留对用户id(uid)的引用。

users
  firebase_uid_0
    name: "Biff"
    email: "biff@thing.com"
  firebase_uid_1
    name: "Leroy"
    email: "leroy@ubrs.com"

此结构和用法在Firebase文档中有所介绍,并且在stackoverflow上有很多次。

所以可能的结构

rooms
  room_0
   users
     firebase_uid_0: true
  room_1
   users
     firebase_uid_1: true
  room_2
   users
     firebase_uid_0: true
     firebase_uid_1: true

room_0 has uid_0 in it but not uid_1
room_1 has uid_1 in it but not uid_0
room_2 has both users in it

话虽如此,答案实际上取决于您的用例。如果结构比我建议的更深,那么您可能想要对数据进行非规范化。如果您需要在更深层次上运行查询,您可能还需要考虑替代结构。