Есть ли способ найти уже значение или нет в поле на Firestore? - PullRequest
0 голосов
/ 23 февраля 2020

Можно ли найти,

  • Поле создано или нет? (пусто)
  • Имеет значение в поле или нет?

БЕЗ GETDATA (БЕЗ ЧТЕНИЯ) ПОСЛЕ УСТАНОВКИ

 return _db.collection('users').document(id).setData({
        'createdAt':Timestamp.now()// If already value not insert
      }, merge: true);

Надеюсь, вы понимаете мой вопрос из-за моего плохого английского sh

1 Ответ

1 голос
/ 23 февраля 2020

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

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

Например:

allow create: if request.resource.data.createdAt == request.time
allow update: if request.resource.data.createdAt == resource.data.createdAt

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

После того, как оно установлено при создании документа, createdAt не может быть изменено из-за update правило.

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