Я создаю схему "глубокого" пути в Firestore.(6 частей пути, 3 коллекции и 3 документа) Что-то вроде collection/document/collection/document/collection/document
или в более реальном примере: comments/{category_name}/videos/{video_id}/usercomments/{auto_generated_id}
Таким образом, проблема в том, что Firestore позволяет добавлять документ во вложенную вложенную коллекцию для любого путидля документа, который в настоящее время не существует.Таким образом, при добавлении документа комментария пользователя в конце пути, он автоматически добавит документы video_id
и category_name
, если они еще не существуют, но документы пусты (или, как сказано в консоли, «don»).'t Существует ") и, следовательно, не появляются в запросах или снимках.
Что произойдет, так это то, что в коллекции usercomments
будет много документов, но я не могу получить список video_ids
, потому что документы в коллекции videos
технически все "пустой».
Как я могу сохранить эту логическую схему пути и при этом иметь возможность запрашивать документы более высокого уровня, которые не имеют полей?Есть ли способ проверить при добавлении комментария, существует ли в данный момент video_id
, а если нет, просто добавить поле типа boolean exists: true
?
РЕДАКТИРОВАТЬ: Я предполагаю, что единственный способ будет добавить поле exists: true
через облачные функции при создании документа, но я не уверен, что при создании документа вПодборка нового документа от клиента вызовет функцию создания документа более высокого уровня или нет.Я обновлю, как только узнаю это.
ОБНОВЛЕНИЕ: Благодаря @Renaud Tarnec за информацию, я смог создать облачную функцию, которая будет устанавливать документы более высокого уровня споле так, что они «существуют» / фактически созданы.Оказывается, вы можете извлечь все подстановочные знаки из контекста пути вложенных документов в функции для правильного динамического редактирования полей документов более высокого уровня.