存储在 firebase 中,对象与数组
Storing in firebase, Objects vs Arrays
将用户存储在数组中还是仅存储对象更好。我想创建唯一的键,但我发现数组会很麻烦。
我的另一个问题是,将特定房间的用户列表保存在该房间内还是在房间外链接到它的另一个对象中更好?
除非确实需要,否则请不要使用数组。它们的使用充其量只是视情况而定,通常有更好的方法来存储您的数据。看到这个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 文档中以及在 Whosebug 上多次出现。
所以一个可能的结构
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
话虽如此,答案实际上取决于您的用例。如果结构比我建议的结构更深,那么您可能需要对数据进行非规范化。如果您需要 运行 更深层次的查询,您可能还需要考虑替代结构。
将用户存储在数组中还是仅存储对象更好。我想创建唯一的键,但我发现数组会很麻烦。
我的另一个问题是,将特定房间的用户列表保存在该房间内还是在房间外链接到它的另一个对象中更好?
除非确实需要,否则请不要使用数组。它们的使用充其量只是视情况而定,通常有更好的方法来存储您的数据。看到这个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 文档中以及在 Whosebug 上多次出现。
所以一个可能的结构
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
话虽如此,答案实际上取决于您的用例。如果结构比我建议的结构更深,那么您可能需要对数据进行非规范化。如果您需要 运行 更深层次的查询,您可能还需要考虑替代结构。