Firebase Firestore Легко запоминающиеся ссылки - PullRequest
0 голосов
/ 12 января 2019

Мы используем Firebase Firestore для хранения данных. Когда пользователь создает новую комнату, мы хотим, чтобы ссылка была легко запоминаемой, чтобы пользователь мог поделиться идентификатором / кодом комнаты с другими пользователями.

В настоящее время Firestore создаст уникальную ссылку, такую ​​как: DvfTMYED5cWdo5qIraZg

Это слишком долго и трудно запомнить или поделиться. Мы могли бы установить другую ссылку вручную, но они должны быть уникальными. Другой момент заключается в том, что пользователи могут создавать несколько комнат, поэтому ссылки должны будут меняться каждый раз.

Есть ли способ использовать более короткие / лучшие ссылки для этого варианта использования?

1 Ответ

0 голосов
/ 12 января 2019

В Firebase / Firestore нет ничего встроенного для более коротких ссылок, поскольку у них не было бы достаточно энтропии, чтобы статистически гарантировать уникальность. Но поскольку создание комнат чата, скорее всего, является довольно объемной операцией, вы можете реализовать это в своем приложении:

  1. Создание собственного токена для каждой комнаты, например, счетчика.
  2. Проверка в базе данных, доступна ли эта комната.
  3. Если токен уже взят, сгенерируйте еще один и попробуйте снова.

Это в значительной степени то, как поля автоинкремента работают в большинстве баз данных. В Firestore вы создадите документ, в котором сохраните текущее значение счетчика:

chat_rooms (collection)
  COUNTERS: { last_room_id: 2 } (document)
  chatroom_1: { room_id: 1, name: "Chat room for Stuart and Frank" } (document)
  chatroom_2: { room_id: 2, name: "Public chat room" } (document)

Когда вы сейчас создаете новую комнату, вы:

  1. Начать транзакцию .
  2. Читать COUNTERS.
  3. Прочитайте last_room_id и увеличьте его.
  4. Напишите обновленный документ обратно.
  5. Создайте новый документ для новой комнаты чата.
  6. Совершить транзакцию

Обратите внимание, что существует много способов генерации кодов. Встречный подход является простым, но я рекомендую проверить больше вариантов. Некоторое интересное чтение:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...