Flutter中Firestore文档更新:好友请求功能实现疑问
实现好友请求添加的addUser方法
你需要在获取目标用户文档后,用Firestore的arrayUnion方法将当前登录用户的邮箱(或用户名)添加到目标用户的requests数组中,同时要处理未找到用户、未登录等异常情况,避免报错。
完整的addUser方法代码如下:
void addUser() async { // 获取当前登录用户的邮箱(若你的用户体系用用户名,替换成对应字段即可) final currentUserEmail = FirebaseAuth.instance.currentUser?.email; if (currentUserEmail == null) { // 处理用户未登录的场景,比如弹出提示 return; } final querySnapshot = await _firestore .collection("users") .where("email", isEqualTo: _search.text) .get(); if (querySnapshot.docs.isNotEmpty) { // 获取目标用户的文档引用 final targetUserDoc = querySnapshot.docs[0].reference; // 用arrayUnion添加请求,自动忽略已存在的请求,避免重复 await targetUserDoc.update({ "requests": FieldValue.arrayUnion([currentUserEmail]) }); // 这里可以添加请求发送成功的提示,比如Toast或弹窗 } else { // 处理未找到目标用户的场景 } }
关键说明
- 优先通过
FirebaseAuth获取当前登录用户信息,确保操作的合法性。 - 使用
arrayUnion而非直接修改数组,它会自动跳过数组中已存在的元素,防止重复发送好友请求。 - 增加了查询结果为空的判断,避免因找不到目标用户触发空指针错误。
内容的提问来源于stack exchange,提问作者Saubhagya Kushwaha
相关产品推荐
相关产品推荐

