Пытаетесь разделить данные с помощью пользовательского uid firebase? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть это в моих правилах, но оно не работает, просто начал использовать firebase через несколько недель a go

    match /pets/{owner} {
      allow read, write: if request.auth.uid == owner
    }

это код, который я использую для получения данных из коллекции:

  Stream<List<Pet>> get pets{

    print(userUid);

    return petsCollection.where('owner', isEqualTo: 
       userUid).snapshots().map(_petListFromSnapshot);
  }

Я использую печать, чтобы узнать, получаю ли я текущий идентификатор от текущего пользователя для этого запроса, но он равен нулю. В другой части кода я уже добавляю uid человека, который создает документ в коллекцию.

Я хочу сказать, что мне нужен совет о том, как получить только текущие пользовательские данные.

1 Ответ

2 голосов
/ 14 апреля 2020

Вы не можете использовать правила безопасности для фильтрации результатов

Как только вы защитите свои данные и начнете писать запросы, имейте в виду, что правила безопасности не являются фильтрами. Вы не можете написать запрос для всех документов в коллекции и ожидать, что Cloud Firestore вернет только те документы, к которым у текущего клиента есть разрешение.

https://firebase.google.com/docs/firestore/security/rules-conditions?authuser=0#rules_are_not_filters

Используйте фильтр для получения текущих документов, связанных с пользователем.

...