首页 > 解决方案 > Flutter Firestore 检查是否存在具有特定 ID 的文档

问题描述

我想检查是否存在具有特定 id 的 firestore 文档。实际上,我的想法是从 firestore 存储和获取特定于用户的数据。如果没有上传特定于用户的数据,它将在应用程序中显示“没有要显示的数据”。到目前为止,我所做的是将数据添加到文档 ID 等于当前用户的 UID 的 Firestore。

FirebaseFirestore.instance.collection("doc_folder").doc(currentuser!.uid).set(data);

现在我无法检查 firestore 数据库是否包含任何包含此数据的文档。到目前为止,我已经达到:

class Crud {
getData() {
    return FirebaseFirestore.instance
        .collection('doc_folder')
        .where("userId", isEqualTo: currentUser!.uid)
        .get();
  }
}
  @override
  void initState() {
    crud.getData().then((result) {
      snap = result;
      setState(() {});
    });
    super.initState();
  }
Widget build(BuildContext context){
return Container(
snap != null? //if code
: //else code
)
}

即使当前用户的 UID 数据不存在,上面的代码也会返回“文档存在”。

标签: firebasefluttergoogle-cloud-firestore

解决方案


原因是即使文档不存在,快照的值也不为空。所以使用下面的代码: -

QuerySnapshot snap=await FirebaseFirestore.instance.collection('doc_folder').where("UserId", isEqualTo: currentuser!.uid).get();

if(snap.docs.isNotEmpty)
     DocumentSnapshot doc=snap.docs.first;
     print(doc['username']);//like this you can access data
else{
     print("Doc doesn't exits");
}

推荐阅读