Я хочу использовать базу данных Firebase для сопоставления моей простой мобильной игры для 2 игроков.
Поток, которому я пытаюсь следовать:
При условии отсутствия других игровых запросов
- Пользователь выбирает найти игру
- Запрос limittofirst (1) используется для ссылки в лобби
- Ничего не найдено
- Запишите UID пользователя в лобби, используя push
- Подождите, пока запись будет найдена другим игровым запросом
При условии, что есть ожидающие игровые запросы
- Пользователь выбирает поиск игры
- Запрос limittofirst (1) используется для ссылки на лобби базы данных
- Запись найдена с UID
- Удалить запись в лобби
- Создать игру, в которой будут оба игрока
Мой вопрос: если два или более пользователей пытаются найти игру наВ то же время, возможно, что limittofirst вернет один и тот же UID для нескольких людей дозапись может быть удалена.Есть ли способ убедиться, что UID в лобби получен только один раз, чтобы использовать его для настройки игры?
Я прочитал документы о транзакциях, и, похоже, он не подходит для этого варианта использования.Я не хочу, чтобы чтение / запись продолжались до тех пор, пока они не будут успешными.Я в основном хочу прочитать и удалить в одном вызове, чтобы значение не могло использоваться более одного раза.
Любая помощь приветствуется.
PS Логика для реализации этого будет внутрифункции Firebase, если это вообще помогает с решением.