Правила:

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

Поток приложения:

Создайте пользователя с Firebase Auth (получите UID)Создать пользовательский документ в базе данных, используя UID в качестве ключа

Код клиента (операция создания):

this.db.doc('users/' + uid).set({username: Santa})

Правила пожарного депо:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{uid} {
      allow create: if 
        request.auth != null && 
        request.auth.uid == uid && 
        !exists(/databases/$(database)/documents/users/$(uid));
      allow update: if request.auth != null && request.auth.uid == uid; 
    }
  }
} 

Дополнительная информация:

Как вы уже знаете, код не работает. Каждый раз, когда я запускаю код на стороне клиента, текущий пользователь полностью заменяется новым документом. Однако, если я удаляю следующую строку из правил, все работает как положено:

allow update: if request.auth != null && request.auth.uid == uid;

Но теперь возникает вопрос, как защитить данные в пользовательском документе от несанкционированных изменений? Любой совет?

Ответы на вопрос(3)

Ваш ответ на вопрос