Путь большой вопрос. Это действительно сводится к тому, что вы хотите делать с вашими данными.
Несмотря на то, что с этой структурой нет ничего технически неправильно, она очень сложна и из-за этого получение данных из нее может быть ограничено.
Вы действительно хотите сгладить ваши данные, когда это возможно, - тем лучше.
Одна мысль состоит в том, чтобы сделать ваши данные повторно пригодными для использования. Не уверен, что это часть набора вверх, но что-то вроде этого:
users
uid_0
name: "Jeff"
uid_1
name: "Cole"
projects
project_id_0
user: uid_0
images
image_id_0: true
image_id_1: true
comments:
comment_id_0: true
project_id_1
user: uid_1
image_id_1: true
comment_id_1: true
images
image_id_0
image: "link to some image"
image_id_1
image: "link to another image"
comments
comment_id_0
verbiage: "nice project_id_0!!!"
made_by: user_id_0
project: project_id_0
comment_id_1
verbiage: "project_id_1 is the best project evah"
made_by: user_id_1
project: project_id_1
С этой структурой, ваши проекты имеют пользователь, изображения и комментарии, привязанные к нему по ссылке, и это довольно мелкое - легко добраться до данных ,
Вы даже можете немного раскрыть это и назначить нескольких пользователей для одного проекта.
Если вы заметили, я перекрестно связал комментарии к проекту и проекту с комментариями. Таким образом, вы можете легко запросить узел комментариев о конкретном проекте (или сделанный определенным пользователем), а также когда вы загрузились в узел проекта (в коде), у вас есть прямой доступ к тому, какие комментарии относятся к этому проекту.
Это также позволяет использовать одно и то же изображение для нескольких проектов.
В дополнение к ответу Джей, документация Firebase содержит большую информацию о таких вещах. В этом конкретном случае см. Раздел [Использовать вложенные данные по-разному] (https://www.firebase.com/docs/web/guide/structuring-data.html#section-nested). –