Я работаю над клиентом чата, использующим базу данных Firebase в реальном времени в качестве базы данных. В настоящее время он работает так, что сохраняет журнал чата между двумя людьми в коллекции чатов с каждой записью в следующем формате <uid>-<uid>
. Это прекрасно работает, так как он просто смотрит ваш uid и uid человека, с которым вы хотите пообщаться, а затем сортирует их, так что это всегда согласованный формат, а затем он проверяет, существует ли эта запись в коллекции чатов, и если да, то просто добавляет к этой записи. В противном случае он создает новый.
![enter image description here](https://i.stack.imgur.com/kM7Ik.png)
Это работает потрясающе. Я пытаюсь думать заранее, хотя, если мы хотим, чтобы несколько человек говорили вместе, как в покое. Я мог бы просто добавить 3 или даже 4 человека в качестве ключа, но в конечном итоге это будет безумно долго. Ограничение ключа firebase составляет 768 байт. Видимо, это где-то между 500 и 700 символов. Я сомневаюсь, что у нас будет такой длинный ключ, но если мы сможем найти решение, которое будет более масштабируемым сейчас и не потребует от нас исправления наших данных позже, я бы предпочел это сделать.
Я думал, что каждая запись чата может иметь массив участников с идентификаторами всех пользователей в этом чате. Затем, если вы хотите пообщаться с кем-то, нам нужно запросить все записей чата и проверить массивы в каждой из них на текущий uid пользователя и uid людей, с которыми они хотят общаться. , Это, кажется, не очень эффективно.
Есть мысли о том, какая реализация лучше / более масштабируема / эффективна? Или, может быть, предложение для другой реализации?