Запрос Firestore на collectionGroup не возвращает документов - PullRequest
0 голосов
/ 04 мая 2020

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

Вот изображение моей базы данных: database image

Я пытаюсь получить счетчик, где все DrilledDepthTolerance.toleranceState равен "notMeasured".

Я выполнил запрос и настроил индекс в FireStore, перейдя по ссылке в сообщении об ошибке. Он настроил следующее в Индексе для одного поля в разделе Исключения: Index

Я думаю, что это может быть проблемой - документация, кажется, всегда описывает индекс, добавляемый в составной индекс, и это создается под одним полем?

Вот мой код (извините, он в c#):

 try
        {
            var collectionRGroupRef = db.CollectionGroup("DrilledDepthTolerance");
            Query query = collectionRGroupRef.WhereEqualTo("toleranceState", "notMeasured");
            QuerySnapshot querySnapshot = await query.GetSnapshotAsync();

            return querySnapshot;
        }

        catch (Exception e)
        {
            return null;
        }

Возвращает количество документов, равное нулю.

В базе данных есть документ, соответствующий критериям запроса.

Я посмотрел примеры, и настройки моей базы данных, похоже, соответствуют требуемым настройкам из образцов. Из документа Firestore данные, которые я буду запрашивать в моей базе данных, будут такими же, как и поиск подколлекций, где в этом примере имя = "Ада": Ada

https://firebase.google.com/docs/firestore/manage-data/structure-data

Буду очень признателен за некоторые указания о том, где я иду не так.

1 Ответ

1 голос
/ 04 мая 2020

Ваш код запрашивает коллекции с именем "DrilledDepthTolerance":

var collectionRGroupRef = db.CollectionGroup("DrilledDepthTolerance");

Насколько я вижу, у вас нет коллекций с таким именем. Вы показываете один документ с полем с именем "DrilledDepthTolerance", который представляет собой карту с другими полями в ней.

Ваша коллекция фактически называется "дырками":

var collectionRGroupRef = db.CollectionGroup("holes");

Вы можете запросить значение встроенного поля допуска, как это:

Query query = collectionRGroupRef
    .WhereEqualTo("DrilledDepthTolerance.toleranceState", "notMeasured");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...