Как выполнить запрос группы сбора, используя идентификатор документа в Cloud Firestore - PullRequest
1 голос
/ 17 мая 2019

Так несколько дней назад я переместил свои записи приложений в облачное хранилище данных из базы данных в реальном времени из-за более гибкого запроса, который, очевидно, имеется в хранилище. Я модифицировал свой код для работы с Firestore в качестве новой базы данных. Теперь я столкнулся с проблемой. Как я могу получить каждый документ в коллекции "Posts", в которой есть коллекция "Likes", которая содержит документ с конкретным именем? Я не знаю, имеет ли это смысл, поэтому вот изображение, демонстрирующее проблему: enter image description here

У меня был рабочий запрос к базе данных реального времени firebase, но я не могу понять, как это сделать с помощью firestore. Возможно ли это или мне нужно изменить структуру моей базы данных? Если мне придется изменить структуру, какой самый удобный способ получить тот же результат?

1 Ответ

1 голос
/ 17 мая 2019

В настоящее время это невозможно при запросах групп сбора.Может возникнуть соблазн поставить фильтр на запрос для FieldPath.documentId() == 'your-doucment-id', но это просто не поддерживается.FieldPath.documentId() на самом деле является токеном, который относится к полностью уникальному идентификатору документа, который включает полный путь к документу.

Временное решение: сохранить идентификатор документа в виде поля в документе и выполнить фильтрацию насодержимое этого поля вместо.Таким образом, если в документе есть поле с именем id с идентификатором документа, вы можете запросить collectionGroup("Likes").whereEquals('id', 'your-document-id').

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