Привет, Эндрю, я собираюсь дать вам ответ на то, что вы спросили, а затем также заставлю вас пересмотреть способ, которым вы разработали схему Firestore, так как она совсем не оптимальна и будет очень сложной, и Firestore предупреждаетэтого здесь:
https://firebase.google.com/docs/firestore/manage-data/structure-data
Теперь, поскольку firstFilm
и firstBook
и все остальные first_
являются коллекциями, вам нужно будет вызвать другую выборку в Firestoreвот так, чтобы получить содержимое этого first_
(имейте в виду содержимое, а не сами коллекции), вот так:
db.collection("Category").document("Film").collection("firstFilm").getDocuments
Также, чтобы сделать вещи более общими, обычно это шаблон, который следует Firestore:
db.collection("Collection Name").document("documentId").collection("Collection Name").....
Как вы можете видеть, поскольку first_
second_
являются коллекциями, вы не можете выбрать их для отображения в следующем табличном представлении пользователю, чтобы выбрать first_
second_
.Вам статически нужно было бы добавить их в ваше приложение, чтобы вы могли показать пользователю, что он может выбрать то, что называется first_
.Это плохо, потому что, скажем, завтра вы добавляете категорию Article
, которую вы бы статически добавили firstArticle
, secondArticle
, thirdArticle
.
Кроме того, documentId
, упомянутый выше, можно получить из snapshot?.documents.documentID
.Вам нужно будет сохранить ссылку на него, чтобы иметь возможность завершить путь для извлечения остальных вложенных объектов в вашей исходной коллекции.
Таким образом, ответ должен показать firstFilm
, secondFilm
, thirdFilm
вам нужно будет обработать это вручную, так как Firestore не будет возвращать, какие коллекции существуют в документе, вы должны вручную ссылаться на эти коллекции и указывать путь к Firestore, чтобы получить документы по этому пути.
Теперь какВы могли бы понять, что способ, которым вы проектировали, не очень оптимален и не масштабируем.Я действительно предлагаю вам найти способ более общего дизайна, чтобы вы могли использовать лучшее в Firestore.Просмотрите документацию Firestore и подумайте о ней.
Мое первоначальное предложение может заключаться в том, чтобы вместо firstFilm
, secondFilm
коллекций создать поле в Film
, которое занимает Array
фильмов,Тогда вы могли бы передать фильмы второму контроллеру представления и создать табличное представление в вашем втором контроллере представления.Тем не менее, это может быть неоптимально, но вы можете сделать его еще более общим, если будете стараться изо всех сил.