Есть ли в Firestore база данных Firebase Realtime, эквивалентная методу приращения? - PullRequest
0 голосов
/ 13 октября 2019

Несмотря на массу поиска, я не могу найти ни одного метода, эквивалентного в базе данных Firebase Realtime базе данных метода приращения, доступного в Firestore.

Проблема, которую я пытаюсь решить, состоит в том, что у меня есть приложение для создания билетов, которое увеличивает счетчик на Firebase для посетителей на мероприятии;однако, если пользователь перешел в автономный режим и регистрировал участников в постоянной базе данных, в то время как другой пользователь, находящийся в сети, также делал это, когда первый пользователь возвращается в онлайн, они перезаписывают значение для счетчика, используя свое сохраненное значение плюс любых дополнительных посетителей, которых онпроверено, прежде чем вернуться в онлайн. Это не учитывает тот факт, что значение счетчика изменилось до того, как он вернулся в онлайн. Будет 6 человек, проверяющих билеты на мероприятия, поэтому это значение всегда будет неправильным, если кто-то переподключит и перезапишет значения, зарегистрированные другими пользователями. Так что, если есть такой метод приращения, как этот:

increment = firebase.firestore.FieldValue.increment(1);

Не могли бы вы дать мне знать, что это такое? Если нет, то как бы вы подошли к моей проблеме с сохранением данных на устройстве в Swift?

NB Я использую базу данных реального времени, а не Firestore, потому что она была рекомендована для скорости и использования данных, когда вы находитесь в ситуации, когда вы делаете тонну небольших обновлений базы данных- что, очевидно, будет иметь место, когда вы обрабатываете билеты для тысяч людей.

1 Ответ

1 голос
/ 13 октября 2019

Единственный безопасный способ увеличить значение (используя только клиентский код) в базе данных реального времени - это использовать транзакцию , для которой требуется, чтобы клиентское приложение было подключено к сети.

Если вам требуется автономный режимдоступ, который в конечном итоге подсчитывает, когда приложение возвращается в онлайн, вы можете использовать триггер Cloud Functions. Стратегия здесь будет , а не для клиентского приложения, чтобы увеличить число. Вместо этого было бы добавить или удалить дочернее значение для пользователя. Затем код функции будет смотреть на значение (может быть true или false) и увеличивать или уменьшать счетчик в ответ на записываемое местоположение.

Вот видеоряд, в котором обсуждается, как начать работу и, в конечном итоге, каквнедрить дочерний счетчик в облачные функции против изменений в базе данных реального времени. Вы могли бы сделать что-то подобное.

https://firebase.google.com/docs/functions/video-series/

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