我正在构建一个具有以下层次结构的消息传递应用程序:
Organization -> Chat Rooms -> Threads -> Messages
对于在firebase中构建关系实体的最佳方法,我有点困惑。文档说扁平化您的数据,但如果数据扁平化,则必须搜索每条记录才能找到标识符,这似乎更昂贵。这样做最经济或“正确”的方式是什么?以下是我最初的建议。箭头表示父->子关系。id 下面的下划线表示生成的标识符(使用 firebase .push())。
rooms ->
_room_id ->
org_id
label
created
type
threads ->
_thread_id ->
room_id
created
messages ->
_message_id ->
thread_id
user_id
name
created
status
body
这是新提出的结构。这两者之间的主要区别在于关系实体如何位于子级而不是父级。
rooms ->
org_id ->
_room_id ->
label
created
type
threads ->
org_id ->
room_id ->
_thread_id ->
created
messages ->
org_id ->
room_id ->
thread_id ->
_message_id ->
user_id
created
status
body
使用新提出的结构,uri 结构可能看起来像这样:
/rooms/<org_id> -> rooms
/threads/<org_id>/<room_id> -> threads
/messages/<org_id>/<room_id>/<thread_id> -> messages
欣赏有关最佳方法的任何见解。谢谢