firebase - 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 数据不存在,上面的代码也会返回“文档存在”。
解决方案
原因是即使文档不存在,快照的值也不为空。所以使用下面的代码: -
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");
}
推荐阅读
- qt - 构建opencv contrib cvv模块时出现LNK错误
- html - 具有固定位置的 Html div 布局
- c++ - 如何确保不会重新分配 std::vector?
- reactjs - React Native (Class Component) 当子组件的props改变时重新渲染父组件
- c++ - VS2019中的C++项目不输出exe
- scrapy - 如何使用 AsyncioSelectorReactor 从扭曲的延迟回调中访问返回值?
- javascript - 使用两个不同的分隔符连接数组中的项目
- youtube - 如何使用 youtube API 获取频道信息
- post - 下载的Angular 9文件损坏
- tfs - 如何在 TFS 2017 中从多个来源克隆代码?