У меня есть две коллекции - арендаторы и пользователи.
Документ по аренде имеет поле с именем «landlordID» и имеет тип REFERENCE (не String).
Теперь в моих правилах безопасности FirestoreЯ хочу разрешить обновление аренды ТОЛЬКО, ЕСЛИ поле landlordID этого аренды совпадает с идентификатором пользователя, отправившего запрос, а именно request.auth.uid
.
Прочтите его как «разрешить обновление документа об аренде, если пользователь, создавший пользователя, аутентифицирован, следовательно, request.auth.uid! = Null, а идентификатор поля landlordID должен быть равен идентификатору запроса.auth.uid.
Следовательно, код должен быть примерно таким:
service cloud.firestore {
match /databases/{database}/documents {
match /tenancies/{tenancyID}{
allow update: if request.auth.uid != null &&
request.auth.uid == get(resource.data.landlordID).id
}
}
Я также пытался get(/databases/$(database)/documents/users/$(resource.data.landlordID)).data.id
Поддержка снимка экрана моей базы данных
Это должно быть очень просто, но get () просто не работает. Документы Firebase, прокрутка до "Доступ к другим документам" не помогалав моей ситуации, и я не уверен, как заставить это работать.
Было бы стыдно, если ссылки не могут быть использованы таким образом, как они похожи на любое другое поле документа.