如何从 Cloud Firestore 中获取数据,其中 user.uid 等于 Flutter 中的文档 ID?
Posted
技术标签:
【中文标题】如何从 Cloud Firestore 中获取数据,其中 user.uid 等于 Flutter 中的文档 ID?【英文标题】:how to get data from cloud firestore where user.uid equal to document id in flutter? 【发布时间】:2020-05-11 15:54:26 【问题描述】:我有这个显示用户信息的个人资料屏幕。 用户通过身份验证后,我将数据存储在云 Firestore 中,文档 ID 等于用户 ID。 现在,我想从 cloud firestore 中检索当前 userId 等于文档 id 的数据。
现在我有这个:
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;
);
);
现在,如何获取姓名、电子邮件、课程、电话号码等其他字段 并且所有值都存储到 user.right 中?
【问题讨论】:
【参考方案1】:如果您的 Firestore 中的文档 ID 等于 Firebase 身份验证控制台中的 userid
,那么您需要先检索 uid
并将其作为参数传递给方法 document()
:
getData() async
String userId = (await FirebaseAuth.instance.currentUser()).uid;
return Firestore.instance.collection('users').document(userId);
【讨论】:
那么在配置文件中我必须进行哪些更改? UserManagement().getData().then((QuerySnapshot docs) userFlag = true; users = docs.documents[users.userId].data; ); 如果文档ID与当前用户登录ID相同,那么可以使用UserId轻松获取任何文档 有什么问题Firestore.instance .collection('users') .document(userId) .get() .then((DocumentSnapshot ds) // use ds as a snapshot ds['name'] );
要获取其他字段,请检查上面评论中的代码 ^【参考方案2】:
您的查询正在获取“userData”集合中的所有文档,然后从整个集合中挑选出第一个文档。对于对该集合具有读取权限的所有用户,这将是同一组文档。我不明白为什么您会期望不同的用户会得到不同的结果。也许您打算为给定用户 ID 的用户访问单个文档,而不是访问所有文档。如果是这种情况,您应该通过其 ID 请求该文档,Firestore.instance.collection('userData').document(uid)' where
uid` 是当前登录用户的 ID。
此外,您的代码正在查询一个名为“userData”的集合,但您的屏幕截图显示了一个名为“users”的集合,因此令人困惑。
【讨论】:
你的意思是我的 getData 函数看起来像这样?:getData(String uid) return Firestore.instance.collection('users').document(uid);
我不知道 - 这符合您的要求吗?你的问题不是很清楚你的目标是什么。
如何获取当前用户的uid? FireBase 用户 = FirebaseAuth.instance.currentUser();
我的目标是从 Firestore 中检索文档 ID 等于当前用户 uid 的数据。以上是关于如何从 Cloud Firestore 中获取数据,其中 user.uid 等于 Flutter 中的文档 ID?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Cloud Firestore 数据库中获取 node.js 中的特定字段值?
即使文档中缺少请求的字段,如何安全地从 cloud-firestore 获取数据?
在 Cloud Functions 中使用 Cloud Firestore 数据
如何从Swift中的Cloud FireStore Firebase访问特定字段