Firestore查询:操作数为何永不为空?如何处理无返回记录?
Firestore查询无记录时的判断问题
为什么会出现「操作数永远不为空」的警告?
Firestore的get()方法永远不会返回null——哪怕查询没有匹配到任何文档,它也会返回一个合法的QuerySnapshot对象,只是这个对象里的文档列表是空的。你写的if (friendUserDocRef == null)这个判断条件永远不会成立,所以IDE会给出警告。
正确处理无记录返回的方式
要判断是否有匹配结果,应该检查QuerySnapshot中的文档列表是否为空,代码示例如下:
FirebaseFirestore firestore = FirebaseFirestore.instance; // 查找friendUID final friendUserDocRef = await firestore.collection(usersCollection) .where('username', isEqualTo: friendUsername) .limit(1) .get(); if (friendUserDocRef.docs.isEmpty) { // 没有找到匹配的用户,处理无记录逻辑 } else { // 找到用户,取第一条记录处理 final friendDoc = friendUserDocRef.docs.first; // 示例:获取用户UID String friendUID = friendDoc.id; // 其他业务逻辑... }
因为你已经用了limit(1),所以查询结果最多只有一条记录,直接用docs.first不会出现数组越界问题。
内容的提问来源于stack exchange,提问作者whatwhatwhat
相关产品推荐
相关产品推荐

