Flutter:如何从uid中检索所有Firebase用户数据?

时间:2020-01-25 09:07:32

标签: firebase flutter firebase-realtime-database

我的数据库看起来像这样: enter image description here 现在,随着我开始添加越来越多的数据,我将获得各种各样的用户。我想根据一个用户的用户ID提取数据。我尝试使用这些代码,但没有一个起作用。我正在获取所有用户的大量数据,但我只想要其中一个。这是我的尝试:

final data=await _collection.collection('UserDetails').getDocuments();
    //print(user.uid);
    DocumentReference ref = await _collection.collection('UserDetails').document(user.uid);
    var lister=await ref.collection('Name');
    print(lister);

这是获取所有数据的代码:

for(var msgs in data.documents)
      {
        print(msgs.data);
      }

我想要一个函数或任何可以这种方式返回数据的东西: function.giveUserID('uid')。giveDataYouwanttoExtract('Attribute') 我可以使用字符串条件从获取的所有数据中过滤掉,但是随着数据库的增加,它必须立即提取大量数据,这会影响性能,因此我想以此方式进行操作。请让我知道是否有任何方法可以仅根据一个用户的uid或电子邮件或任何内容提取其数据。

1 个答案:

答案 0 :(得分:2)

您可以使用查询。下面的代码返回name等于Jack的所有用户。

await _db.collection("UserDetails")
      .where("Name", isEqualTo: "Jack")
      .getDocuments()
      .then((QuerySnapshot snapshot){
            snapshot.documents.forEach((DocumentSnapshot documentSnapshot){
                print(documentSnapshot.data);
            });
       });