Flutter中Cloud Firestore记录更新异常:查到记录却提示文档不存在
问题分析与解决方法
你遇到的错误核心原因是集合名称拼写不一致:
- 查询数据时用的集合是
'Courses'(复数形式) - 更新数据时误写成了
'Course'(单数形式)
Firestore 对集合名称的大小写、单复数严格敏感,你查询到的文档属于 Courses 集合,但更新时却去 Course 集合寻找对应 ID 的文档,自然会提示“请求的文档不存在”。
修正后的代码如下:
Future<void> updateCourse(Course updatedCourse) async { QuerySnapshot courseQuery = await FirebaseFirestore.instance .collection('Courses') .where('title', isEqualTo: updatedCourse.title) .get(); if (courseQuery.docs.isNotEmpty) { DocumentSnapshot docSnapshot = courseQuery.docs.first; final docId = docSnapshot.id; // 修正集合名称为和查询一致的 'Courses' await FirebaseFirestore.instance .collection('Courses') .doc(docId) .update({'title': 'This is Pratham'}); } else { print("There is some problem"); } }
额外建议:如果你的函数设计意图是更新传入的 updatedCourse 的标题,建议把更新字段改成 {'title': updatedCourse.title},而非写死固定字符串,这样更贴合函数的业务逻辑。
内容的提问来源于stack exchange,提问作者Pratham Dave
相关产品推荐
相关产品推荐

