UID Firebase против идентификатора документа и правил Firestore - PullRequest
0 голосов
/ 26 февраля 2020

Привет, я немного запутался здесь с UID пользователя Firebase и идентификатором документа Firestore (userId ???) ... и ищу помощь: -)

Создавая пользователя, я получаю UID и я записываем его в базу данных

 let db = Firestore.firestore()
 db.collection("user").addDocument(data: [
 "name": "confused",
 "uid": result!.uid ])

, тем самым получая уникальный идентификатор документа (отмечен зеленым), который, как мне показалось, также является userId:

Screenshot Firestore

Я хотел добиться того, чтобы пользователь мог только читать и писать свой документ (зеленый), а не другие документы (красный)

Поэтому я использовал следующее rules

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // Make sure the uid of the requesting user matches name of the user
    // document. The wildcard expression {userId} makes the userId variable
    // available in rules.
    match /user/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}

Значит, UID и идентификатор документа (userId ???) должны иметь соединение, не так ли? Но я действительно не понимаю ?! В моем приложении я хочу получить идентификатор документа пользователя, чтобы использовать его позже по http-триггеру, но я могу получить только UID

print(Auth.auth().currentUser!.uid)

какие-либо идеи, или я могу ошибиться?

1 Ответ

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

Обычно UID пользователя используется в качестве идентификатора их собственного документа. Прямо сейчас вы используете addDocument, который сообщает Firestore назначить случайный идентификатор для документа. При этом правило безопасности не будет работать должным образом (поскольку идентификатор, назначенный Firebase Auth, никогда не будет совпадать с идентификатором документа, назначенным Firestore. Вместо этого вам следует использовать setDocument и указать UID из Firebase Auth в качестве идентификатора документа писать.

...