我有两个不同的系列:
userId
及其对先前集合的引用要在我的页面上显示这些食谱,我使用:
this.recipes = collection.snapshotChanges().map(actions => {
return actions.map(action => ({
$id: action.payload.doc.id,
...action.payload.doc.data()
}));
});
和
<ion-card *ngFor="let recipe of recipes | async; let i = index">
...
获取用户头像和名称的最佳方法是什么?
答案 0 :(得分:0)
对于每个食谱,您都有一个userId。使用它来检索每个配方的用户文档。 (如果用户在列表中出现多次,可能会缓存用户。) 请记住,文档检索是异步的,因此您可能想要创建一个promises数组并使用Promise.all https://stackoverflow.com/a/47554838/179156
答案 1 :(得分:0)
试试此代码
this.recipes = collection.snapshotChanges().map(actions => {
return actions.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
//this.afs.collection('users') is the ref to users collection, yours should be different
return this.afs.collection('users').doc(data.userId).snapshotChanges().map(userActions=>{
return userActions.payload.data();
}).map(user=>{
return { id:id, userName:user.name, ...data };
})
});
}).flatMap(merge => Observable.combineLatest(merge)).map(data => {
return [].concat(...data).map(d => {
return d;
})
});