Firestore, как проверить владельца документа перед записью?

Как проверить владельца документа, прежде чем разрешить пользователю создавать? шаги:

  1. документ уже создан тем же владельцем.
  2. после этого тот же владелец попытается создать свойство и значение внутри документа.

document.owner выдает ошибку при публикации.

//only allow create in moviesCommentID/{document} when document is owned by the user
match /moviesCommentID/{document=**} {
    allow create: if request.auth != null && document.owner == request.auth.uid;
}

любая помощь приветствуется.

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
0
86
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Переменная document в ваших правилах представляет собой строку, значением которой является идентификатор документа.

В Firestore нет встроенной концепции владельца документа. Но если у вас есть поле owner в данных документа, вы можете получить к нему доступ в своих правилах как resource.data.owner. Также ознакомьтесь с документацией Firebase по проверке данных в правилах безопасности.

Ответ принят как подходящий

1- Создание

У вас должно быть поле в Firestore документе, который вы изменяете, в котором хранится uid владельца

allow create: if request.auth != null && resource.data.ownerUid == request.auth.uid;

2- Обновление:

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

allow update: if request.resource.data.ownerUid== resource.data.ownerUid;

Обратите внимание, что переменная request.resource содержит будущее состояние документа.

Другие вопросы по теме