Я пытаюсь получить некоторые идентификаторы из коллекции, а затем пытаюсь использовать каждый из этих идентификаторов, чтобы получить больше данных из другой коллекции. Вот что я сделал до сих пор:
По сути, у меня есть приложение для блога, в котором несколько пользователей смогут опубликовать статью. И в указанной статье есть категории. Дело в том, что когда пользователь выбирает категорию для фильтрации, он приводит меня ко всем ПОЛЬЗОВАТЕЛЯМ, у которых есть статья в указанной категории (вместо того, чтобы приносить все статьи выбранной категории).
Итак, в Firestore у меня есть:
categories/{categoryId}/users/{userId}
Хотя {userId} содержит больше информации (например, идентификаторы статей в этом {categoryId}), я просто заинтересован в самом userId.
То, что я хочу сделать, это использовать восстановленные идентификаторы пользователя по указанному выше пути и использовать его для получения пользовательских данных по следующему пути:
users/{userId}
А вот где я застрял и не уверен, что делать дальше .. Должен ли я хранить идентификаторы в массиве, а затем отправлять запросы в Firestore, используя цикл forEach в указанном массиве? Должен ли я дублировать данные пользователя в category / {categoryId} / users / {userId} ? Возможно, измените мою структуру данных Firestore? Или, может быть, есть другой способ сделать это в Angular?
this.afs.collection<Category>('categories').doc(category.name).collection<User>('users')
.snapshotChanges().map(docChangeActionArray => {
return docChangeActionArray.map(value2 => {
return value2.payload.doc.id;
})
}).subscribe(ids => {
//WHAT TO DO HERE?
})
Я прошу прощения за такой простой вопрос. Я все еще изучаю Angular и Firestore, но благодарю за любую помощь!
Спасибо.
UPDATE
Я сделал следующее:
.subscribe(ids => {
ids.map(id => {
this.afs.collection('users').doc<User>(id).valueChanges().map(user => {
return user;
}).subscribe(user => {
console.log(user); //Got it!
})
})
})