Снимок пожарного магазина Flutter всегда нулевой или пустой список - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь получить снимок пожарного магазина, но он всегда возвращает ноль, я не знаю, в чем проблема ..

пожалуйста, смотрите изображение здесь

мои правила:

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
});

Обновление: как этот документ не существует?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

В Документах Firebase относительно удаления элементов есть предупреждение, что при удалении документа он не удаляет свои вложенные коллекции. Вот почему эти документы помечены этим описанием. Однако подколлекции все еще должны быть доступны.

В обоих ваших примерах кода вы используете "Александрийскую губернию" в качестве документа, предполагая, что на скриншоте это коллекция.

У меня нет площадки для тестирования однако он должен go примерно так:

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
});

Такие запросы могут быть успешными, если какой-либо из документов еще существует. Поскольку все документы на ваших скриншотах написаны шрифтом Itali c, я полагаю, что остались только ссылки на некоторые пустые коллекции. Так что вы не сможете ничего запрашивать.

Надеюсь, это поможет!

0 голосов
/ 04 марта 2020

В вашем первом бите кода пустой массив означает, что ваш запрос не нашел никаких документов в именованной коллекции.

Во втором бите вашего кода, null для snapshot.data означает что задокументированный запрос не существует.

В обоих случаях, поскольку мы не можем увидеть ваши данные и проверить, что они существуют, больше ничего нельзя сказать. Это не имеет ничего общего с правилами безопасности, так как ваши запросы не будут выполнены полностью, если они будут отклонены правилами. Я подозреваю, что имена в вашем коде просто не совпадают с именами в вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...