我在Firebase中实现了一个标记系统,使用以下结构:
现在,我想创建一个标签为id tag_id_1的所有照片列表。首先,我需要检索/ tags / tag_id_1来收集ID,然后我需要从Firebase检索相应的照片数据。
我正在使用Angularfire2库和Ionic 2。
我到目前为止编写的代码是这样的:
this.posts = af.database.list('/tags/tag_id_1')
.map((items) => {
console.log(items);
return items.filter(item => item.$value).map((item) => {
let id = item.$key;
return af.database.object(`/photos/${id}`);
});
});
this.posts.subscribe();
<ion-list>
<ion-item *ngFor="let post of posts | async" class="text" >
{{ post }}
</ion-item>
</ion-list>
但它似乎没有做到这一点。此外,每次将id添加到集合时,这将生成新的照片对象数组。因此,我尝试以不同方式实施它:
this.posts = Observable.create(observer => {
var ref = _cloud.ref('/tags/tag_id_1');
ref.on('child_added', (snapshot) => {
console.log(snapshot.key);
observer.next(_cloud.object(`/photos/${snapshot.key}`));
});
});
this.posts.subscribe();
这只会触发更新后的照片。但我不能让它渲染。
有没有人遇到过类似的问题?我看了一下Nested Observables in Angular2 using AngularFire2 not rendering in view(我的第一个解决方案的灵感来自那个帖子),但我无法让它正常工作。