Обновление Firebase, если существует - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать функцию обновления в firestore, используя метод .update ().

Вот пример функции, которую я выполняю:

db.collection('Users').doc(offeruserid).update({
  overrideTag: process.env.A_ULTRA_SECRET_KEY,
  userExperience: firebase.firestore.FieldValue.increment(Number(offerrate))
})

Что теперь Я действительно хочу, чтобы это произошло, это посмотреть в документе и посмотреть, есть ли поле "overrideTag". Если его там нет, он НЕ будет обновлять его и просто забудет об этом.

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

Это то, что мы можем сделать в базе огня?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы можете сделать это в правилах безопасности, проверив наличие вашего суперсекретного значения в поле overrideTag.

service cloud.firestore {
  match /databases/{database}/documents {
    match /Users/{user} {
      allow update: if request.resource.data.overrideTag == "YOUR_SUPER_SECRET_VALUE";
    }
  }
}

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

if exists(/databases/$(database)/documents/secrets/$(request.resource.data.overrideTag))

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

0 голосов
/ 06 апреля 2020

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

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