2017-03-03 84 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"] 
    }] 
} 

注意:这不是您的问题的实际解决方案。我用广义的方式解决了这个问题。