我正在尝试获取Firestore快照,但它始终返回null,我不知道问题出在哪里..
我的规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
我的代码1:
await Firestore.instance.document("myDB/EG/EG/Cairo Governorate").collection("Alexandria Governorate").limit(10).getDocuments().then((snapshot)async{
print(snapshot.documents);//[]
});
我的代码2:
await Firestore.instance.document("myDB/EG/EG/Cairo Governorate/Alexandria Governorate").get().then((snapshot)async{
print(snapshot.data);//null
});
答案 0 :(得分:0)
在代码的第一部分,空数组意味着您的查询未在命名集合中找到任何文档。
在第二行代码中,null
的{{1}}表示所请求的文档不存在。
在两种情况下,由于我们看不到您的数据并验证其是否存在,因此无话可说。这与安全规则无关,因为如果查询被规则拒绝,查询将完全失败。我怀疑您代码中的名称根本不匹配您数据库中的名称。
答案 1 :(得分:0)
在Firebase docs regarding Delete Douments中,警告您删除文档时不会删除其子集合。这就是为什么这些文档都标有此描述的原因。但是子集合应该仍然可用。
在这两个代码示例中,您都使用“亚历山大省”作为文档,同时从屏幕快照中猜测其集合。
我没有游乐场来测试它,但是它应该像这样:
await Firestore.instance.collection("myDB/EG/EG/Cairo Governorate/Alexandria Governorate").limit(10).getDocuments().then((snapshot)async{
print(snapshot.documents);//[]
});
并这样:
await Firestore.instance.document("myDB/EG/EG/Cairo Governorate/Alexandria Governorate/<EXISTING DOCUMENT ID>").get().then((snapshot)async{
print(snapshot.data);//null
});
如果任何文档仍然存在,则此类查询可能会成功。由于屏幕快照中的所有文档均为斜体,因此我想只引用了一些空的子集合。因此,您将无法查询任何内容。
我希望它将对您有帮助!