#firebase #google-cloud-firestore
# #firebase #google-облако-firestore
Вопрос:
Я столкнулся с проблемой, которую я не могу понять, и надеялся, что кто-нибудь здесь может пролить некоторый свет — у меня есть приложение с коллекцией «first class», на которое можно ссылаться и расширять его документы другой коллекцией. это что-то вроде основных элементов, которые встроены в приложение, и пользователи могут расширять или переопределять его поля, такие как цена, описание, статус и т. Д. «… проблема, с которой я сталкиваюсь, заключается в запросе основной коллекции и получении только тех элементов, которые расширены в другом месте.
Важно запрашивать сами основные элементы, чтобы всегда запрашивать / сортировать их по популярности, релевантности или тому, что будет важно в будущем. есть какие-нибудь советы?? Спасибо
Комментарии:
1. Похоже, вы просто хотите запросить расширенную коллекцию. По вашему определению, только документы расширяют базовую коллекцию. Если это не то, что вы ищете, пожалуйста, отредактируйте вопрос, чтобы более подробно объяснить, чего вы пытаетесь достичь, фактически показывая данные, которые вы пытаетесь запросить, и объясните результат запроса, который вы пытаетесь сделать.
2. @DougStevenson важно запрашивать исходную коллекцию, поскольку мне может понадобиться базовая сортировка по имени / рейтингу, и эти поля существуют только в исходной коллекции
Ответ №1:
Вы не сможете сделать это с помощью одного запроса, поскольку запрос может возвращать результаты только из одной коллекции верхнего уровня. Вы не можете объединить или объединить документы из обеих коллекций в одном запросе.
Что вы, вероятно, в конечном итоге сделаете, так это выполните один запрос из базовой коллекции, чтобы найти свой результирующий набор, а затем по отдельности получите каждое возможное совпадающее расширение из другой коллекции.
Или же вам придется добавить третью коллекцию, в которой хранятся объединенные документы из каждой коллекции в единую коллекцию, к которой можно обращаться самостоятельно. Нередко дублирование данных в базах данных NoSQL для целей специальных запросов.
Комментарии:
1. Я вижу, самая важная идея, стоящая за этой проблемой, — сохранить возможность запрашивать базовую коллекцию, потому что в ее документах могут быть динамические поля, такие как «рейтинги», по которым мне нужно будет сортировать запросы. если я буду дублировать это поле «рейтинг», например, мне придется всегда делегировать изменения во всех расширенных документах для всех пользователей. Я не считаю, что это хорошая практика: (
Ответ №2:
При использовании firebase или любых решений nosql вам необходимо создавать свои коллекции в зависимости от того, как вы будете использовать данные, в вашем случае вам понадобится третья коллекция, в которой хранится то, что вы будете извлекать, или вам нужно сохранить копию данных в основной коллекции