Как предотвратить отправку нескольких запросов в Firestore из приложения React-Native? - PullRequest
0 голосов
/ 25 января 2020

У меня есть приложение, которое будет использоваться многими пользователями, и иногда они будут публиковать в одном документе в одно и то же время, как Firebase справится с этим. Есть ли способ, которым я могу предотвратить это?

Мой сценарий таков: есть ресторан, где вы можете заказать еду, но есть ограниченное количество, скажем, 5, и есть 10 пользователей одновременно с публикацией этого документа, как я могу предотвратить это? PS Я использую прослушиватели в приложении RN, поэтому оно постоянно проверяет изменения в количестве, но что, если пользователи быстрее обновлений в приложении?

Ответы [ 2 ]

1 голос
/ 25 января 2020

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

Чтобы лучше прочитать документацию по транзакциям понять, как это работает.

0 голосов
/ 25 января 2020

Вы можете использовать концепцию: «Принять или отклонить запросы»

Ваши правила безопасности также могут принимать или отклонять запросы на основе их ограничений. Переменная request.query содержит свойства limit, offset и orderBy запроса. Например, ваши правила безопасности могут отклонять любой запрос, который не ограничивает максимальное количество документов, извлекаемых определенным диапазоном:

allow list: if request.query.limit <= 5;

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

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