1

我正在构建一个具有以下层次结构的消息传递应用程序:

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

欣赏有关最佳方法的任何见解。谢谢

4

0 回答 0