Я пытаюсь создать базовое приложение чата, содержит только личные сообщения.
Фон
У меня есть два пользователя, пользователь A и пользователь B .
users/A
- name: "John"
users/B
- name: "Mary"
Когда пользователь A отправляет сообщение пользователю B , я создаю диалог между этими двумя. В этом случае идентификатор разговора будет A_B. Подробнее здесь.
user-conversations/A/B # A for user A, B for user B
- conversationId: A_B
user-conversations/B/A # B for user B, A for user A
- conversationId: A_B
А у меня есть коллекции пользовательских разговоров. Я создал эту структуру, потому что когда пользователь A открывает приложение, я хочу показать его разговоры с именем и изображением пользователя B . С этой структурой мне просто нужно иметь идентификатор пользователя, а затем я могу получить его / ее разговоры с информацией другого пользователя.
И, конечно, у меня есть коллекция разговоров, которая включает в себя сообщения.
conversations/A_B/messages # A_B is conversationId between user A and user B
- text: "hey"
- sender: "A"
Вопрос
Итак, как мне улучшить структуру моей базы данных, в частности, коллекцию пользовательских разговоров. Потому что, когда кто-то хочет читать или писать в разговорах / A_B, я хочу быть уверен, что пользователю разрешено писать, и я смог бы достичь этого только в том случае, если у меня имеется диалоге ID, связанном с пользователем.