【发布时间】:2018-11-03 07:17:39
【问题描述】:
我对内部 Observable 有疑问。
const wordsCollection = this.db.collection('words').valueChanges();
return wordsCollection.pipe(
map((words: Word[]) => {
return words.map((word: Word) => {
const categories = word.categories.map((categoryId: string) => {
return this.db.collection('categories').doc(categoryId).valueChanges().pipe(
map((category: Category) => {
return category;
})
);
});
return {
...word,
categories: categories
};
});
})
);
结果是这样的:
{
word: 'blabla',
categories: Observable (instead of for example 'english')
}
我知道我需要使用类似 forJoin 的东西,但不知道如何正确使用它。有什么帮助吗?
【问题讨论】:
-
什么是
word.categories?它是一个类别 ID 数组吗?你期待什么结果? {word, category} 对的数组? -
是的,word.categories 是一个带有类别 ID 的数组,结果应该得到类别名称而不是 ID(现在每个单词都有属性 'categories',其值类似于 ['id1', 'id2 '])
-
那么你想要
[{word: 'blabla', categories: ['english', 'italian']}, {word: 'buu', categories: ['french', 'german']}这样的东西吗? -
是的,正是:)
标签: javascript firebase rxjs google-cloud-firestore observable