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