Flutter中如何通过用户名更新Firebase数据库随机ID文档的字段值
实现方案
你可以先根据username字段查询匹配的用户文档,获取到对应的自动生成文档ID后,再执行更新操作即可,不需要提前知晓文档的随机ID。
修改后的工具方法代码
changeValueByUsername(Map<String, dynamic> valueMap, String targetUsername) async { // 查询username匹配的用户文档 QuerySnapshot querySnapshot = await FirebaseFirestore.instance .collection('users') .where('username', isEqualTo: targetUsername) .limit(1) .get(); if (querySnapshot.docs.isNotEmpty) { // 获取匹配文档的ID String userDocId = querySnapshot.docs.first.id; // 执行字段更新 await FirebaseFirestore.instance .collection('users') .doc(userDocId) .update(valueMap); } }
调用示例
Map<String, String> valueMap = { 'name': _name, }; // 传入要修改的用户username即可完成更新 await dataBase.changeValueByUsername(valueMap, "目标用户的username");
注意事项
- 请确保你的
users集合下所有用户文档都存在username字段,存储对应用户的用户名。 - 如果业务要求用户名唯一,建议给Firestore的
users集合的username字段添加唯一索引,避免出现多个用户匹配同一用户名的异常情况。 - 上述方法为异步实现,调用该方法的外层函数需要添加
async标记,也可以选择用.then的方式处理异步逻辑。
内容的提问来源于stack exchange,提问作者Johan Jomy
相关产品推荐
相关产品推荐

