как получить данные из облачного пожарного хранилища, где user.uid равен идентификатору документа во флаттере? - PullRequest
0 голосов
/ 25 января 2020

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

enter image description here

На данный момент у меня есть это:

class UserManagement {
  getData() async{
    String userId = (await FirebaseAuth.instance.currentUser()).uid;
    print(userId);
    return Firestore.instance.collection('users').document(userId);

  }

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

UserManagement().getData().then((results) {
    setState(() {
      userFlag = true;
       users = results;
    });
    });

Теперь, как получить другие поля, такие как имя, адрес электронной почты, курс , phonenumber..etc и все значения хранятся в user.right?

Ответы [ 2 ]

3 голосов
/ 25 января 2020

Если идентификатор документа в вашем пожарном хранилище равен userid в консоли аутентификации Firebase, тогда вам нужно сначала извлечь uid и передать его в качестве аргумента методу document():

getData() async{
    String userId = (await FirebaseAuth.instance.currentUser()).uid;
    return Firestore.instance.collection('users').document(userId);
  }
1 голос
/ 25 января 2020

Ваш запрос извлекает все документы из коллекции "userData", а затем выбирает первый документ из всего этого набора. Это будет один и тот же набор документов для всех пользователей, которые имеют доступ для чтения к этой коллекции. Я не понимаю, почему вы ожидаете другого результата для разных пользователей. Возможно, вы имели в виду доступ к одному документу для пользователя по его идентификатору пользователя, а не ко всем документам. Если это так, вам следует запросить этот документ по его идентификатору с Firestore.instance.collection('userData').document(uid)' where uid` - идентификатором текущего пользователя, вошедшего в систему.

Кроме того, ваш код запрашивает коллекцию с именем "userData", но ваш Снимок экрана показывает коллекцию под названием «пользователи», так что это сбивает с толку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...