2017-03-03 91 views
1

我正在研究一個留言板應用程序,它允許管理員將消息發送給特定的人羣。人們可以訂閱多個組。構造羣組消息firebase

我需要一個用戶列表,顯示他所訂閱的組的所有消息。我提出了以下結構:

{ 
    "placeMessages": { 
     "<place-push-key>": { 
      "message-push-key": { 
       "user_id": "<user-push-key>", 
       "place_id": "<place-push-key>", 
       "subject": "" 
       "message": "" 
       "date": "<date>" 
      } 
     } 
    }, 
    "userMessages": { 
     "<user-push-key>": { 
      "message-push-key": { 
      } 
     } 
    } 
} 

但問題是,當管理員發送消息,需要被加入到所有訂閱該組的用戶的消息。這可能意味着10.000條消息的原子寫入操作。我預計這會很慢,有什麼辦法可以解決這個問題嗎?

回答

0

我認爲下面的JSON給出了一個關於如何解決你的問題的想法。

{ 
    "groups": [{ 
     "groupId": "001", 
     "messages": [{ 
      "messageId": "001_1001", 
      "subject": "" 
      "message": "" 
      "date": "<date>" 
     }, { 
      "messageId": "001_1002", 
      "subject": "" 
      "message": "" 
      "date": "<date>" 
     }] 
    }, { 
     "groupId": "002", 
     "messages": [{ 
      "messageId": "002_1001", 
      "subject": "" 
      "message": "" 
      "date": "<date>" 
     }, { 
      "messageId": "002_1002", 
      "subject": "" 
      "message": "" 
      "date": "<date>" 
     }] 
    }], 

    "users": [{ 
     "userId": 10001, 
     "subscribedGroups": ["001", "002"] 
    }, { 
     "userId": 100012, 
     "subscribedGroups": ["001"] 
    }, { 
     "userId": 100013, 
     "subscribedGroups": ["002"] 
    }] 
} 

注意:這不是您的問題的實際解決方案。我用廣義的方式解決了這個問題。