Установить объект пожарного депо, если он не существует - PullRequest
0 голосов
/ 16 апреля 2019

Я нахожусь в ситуации, когда запись в firebase вызывает функцию облака.Внутри облачных функций я выполняю .set().

. Моя проблема в том, что облачные функции гарантируют политику at least once.Вместо exactly one policy.Это означает, что иногда случается, что несколько функций просыпаются и пишут в одно и то же место.

Я знаю, что могу использовать транзакцию и спросить «документ уже существует», если нет, ничего не делать.Но мне было интересно, если есть флаг, который говорит set("data", exist=false) или около того.

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

Имейте в виду, облачные функции используют admin-sdk.Это означает, что правила безопасности не могут быть использованы в качестве решения.

1 Ответ

0 голосов
/ 16 апреля 2019

Я не думаю, что вы хотите, возможно без транзакции.

Интересно, что обратное возможно : с помощью update() вы можете разрешить запись только тогда, когда документ уже существует.

Как вы уже сказали: обычно этот тип условия должен быть отражен в правилах безопасности. Но поскольку Cloud Functions использует Admin SDK для выполнения записи, он обходит эти правила.

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