如何在Flutter中基于Firestore活跃用户数据创建同职位用户查询?
解决方法
你需要先获取当前登录用户的职位信息,再将其传入查询条件中,具体实现分两种场景:
场景1:已缓存当前用户的职位信息
如果你已经在本地存储(比如SharedPreferences、全局状态管理)中保存了当前登录用户的job值,直接调用该值即可:
// 假设你已获取到当前用户的职位并存在变量中 String activeUserJob = "你的缓存职位值"; final Stream<QuerySnapshot> _usersStream = FirebaseFirestore.instance .collection('users') .where("job", isEqualTo: activeUserJob) .snapshots();
场景2:从Firestore实时获取当前用户职位
如果没有缓存,需要先通过Firebase Auth拿到当前用户UID,再查询该用户的job字段:
// 先获取当前登录用户的UID String? currentUserId = FirebaseAuth.instance.currentUser?.uid; if (currentUserId != null) { // 查询当前用户的职位 DocumentSnapshot userDoc = await FirebaseFirestore.instance .collection('users') .doc(currentUserId) .get(); String activeUserJob = userDoc.get('job'); // 创建同职位用户的查询流 final Stream<QuerySnapshot> _usersStream = FirebaseFirestore.instance .collection('users') .where("job", isEqualTo: activeUserJob) .snapshots(); }
注意事项
- 确保
FirebaseAuth.instance.currentUser不为空,使用前务必做非空判断,避免空指针错误。 - 若需要实时同步当前用户职位的变化,可以监听当前用户文档的快照,再动态更新同职位用户的查询流。
内容的提问来源于stack exchange,提问作者Rene
相关产品推荐
相关产品推荐

