在Angular 2中使用Firebase从多个列表中检索值

Retrieving values from multiple lists with Firebase in Angular 2

本文关键字:列表 检索 Firebase Angular      更新时间:2023-09-26

我有一个简单的应用程序,列出了一组位置,其中登录用户可以将给定位置标记为"收藏"。

我在firebase中的数据结构包含一个简单的位置列表,如:

=>

地点位置id : [] => [{ 名称:"名字"},{名称:"名字2}]

喜欢=>用户标识:[]=>位置id:[] =>{喜欢:真}

我想在我的模板中使用一些简单的逻辑遍历它:

  <md-card *ngFor="let location of locations | async">
    <md-card-title> {{location.name}}</md-card-title>
    <md-card-content>{{location.liked}}</md-card-content>
  </mc-card>

在我的组件

中使用以下逻辑
  locations: Observable<any[]>;
  constructor(
    private cardService: CardService,
    private router: Router,
    public af: AngularFire)
  {
    this.locations = af.database.list('/trips')
      .map((locations) => {
        return locations.map((location) => {
          location.liked =  af.database.object(`/likes/${this.uid}/${location.$key}`);
          return location;
        })
      }); 

然而,位置。在我看来,喜欢的房产仍然是空的。我检查了/喜欢/${this.uid}/${位置。$key} URL实际上包含所需的数据。

有什么建议吗?

谢谢

因为location.like是firebase database.object,它返回FirebaseObjectObservable对象。要在视图中显示对象值,您应该在它上面使用async管道

<md-card-content>{{location.liked | async}}</md-card-content>

你可以在AngularFire Docs

中找到同样的解释