如何从Firestore数据库中获取chatroom集合指定层级的用户名字段值
问题原因
- 现有代码中
doc()方法传入了固定值"chatRoomId",与你要访问的目标文档IDa_qaz不匹配,无法命中正确的文档 - 仅返回了文档快照对象,没有进一步提取
users字段下的目标值'a'
正确实现代码
getOtherUserByUsername() async { DocumentSnapshot chatroomDoc = await FirebaseFirestore.instance .collection("chatroom") .doc("a_qaz") // 填入目标文档ID .get(); // 先判断文档是否存在 if (chatroomDoc.exists) { Map<String, dynamic> usersField = chatroomDoc.get("users"); // 提取users字段下的'a'对应值 return usersField["a"]; } // 文档不存在时返回空值,可按需替换为异常抛出逻辑 return null; }
补充说明
- 如果你的
users字段是数组而非键值对结构,只需调整取值逻辑为:先获取数组再遍历匹配值为'a'的元素即可 - 调用该方法时建议增加
try-catch逻辑捕获网络、权限相关异常
内容的提问来源于stack exchange,提问作者Anim
相关产品推荐
相关产品推荐

