firebase Firestore:为什么这里的操作数不能为空,我应该如何处理没有返回记录的情况?

ruyhziif  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(103)

我想使用WHERE子句查询集合。可以返回1条记录,也可以不返回记录。我正在尝试处理不返回记录的情况,但Android Studio在if语句中给出了一个警告,指出操作数不能为空。这是为什么?如何处理可能找不到记录的情况?

FirebaseFirestore firestore = FirebaseFirestore.instance;  

//Look up friendUID
final friendUserDocRef = await firestore.collection(usersCollection).where('username', isEqualTo: friendUsername).limit(1).get();
    
if (friendUserDocRef == null) { //The warning points here
  //...
}
bbmckpt7

bbmckpt71#

//Look up friendUID
final friendUserDocRef = await firestore.collection(usersCollection).where('username', isEqualTo: friendUsername).limit(1).get();
    
if (friendUserDocRef.docs.isNotEmpty) { //Clears the warning. Only executes if a doc was returned
  //...
}

无论Firebase中是否有文档,QuerySnapshot总是被返回-这就是为什么它不能为空。因为你在你的案例中使用limit(1)QuerySnapshot在快照的docs属性中将有0或1个项目。为了检查是否返回已知记录,你将检查docs是否为空。

相关问题