我的数据库看起来像这样: 现在,随着我开始添加越来越多的数据,我将获得各种各样的用户。我想根据一个用户的用户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或电子邮件或任何内容提取其数据。
答案 0 :(得分:2)
您可以使用查询。下面的代码返回name等于Jack的所有用户。
await _db.collection("UserDetails")
.where("Name", isEqualTo: "Jack")
.getDocuments()
.then((QuerySnapshot snapshot){
snapshot.documents.forEach((DocumentSnapshot documentSnapshot){
print(documentSnapshot.data);
});
});