AngularFire2 遍历对象数组

AngularFire2 iterate through array of objects

我有以下 Firebase 数据库结构:

orders {
  $uid { // user UID
    order {
    // ...
    }
  }
}

我正在尝试通过这种方式获取所有订单:

public getOrders() {
  this.db.list('/orders).subscribe(items => {
    items.forEach(item => {
      console.log(item);
    })
  })
}

我的问题是,如何获得所有订单? 因为现在,我无法遍历 item.

您可以将 Firebase Database 的结果 (items) 保存在 variable 中,之后,使用 Angular 模板中的变量 (HTML).

Firebase 数据库: /订单/

[{
    "userId1": {
      "name": "Michael",
      "value": "55$"
    }
  },
  {
    "userId1": {
      "name": "Michael",
      "value": "55$"
    }
  }
]

组件的逻辑

databaseOrders;
public getOrders() {
  this.db.list('/orders).subscribe(items => {
    this.databaseOrders = items;
  })
}


组件的模板

<div *ngIf="databaseOrders" class="orders">
  <article *ngFor="let order of databaseOrders; let i = index"> 
    <span class="ordered-by">{{order[i].name}}<span> 
    <b class="order-value">{{order[i].value}}</b>
  </article>
</div>

好的,最后我可以通过以下方式解决它:

public getOrders() {
  this.db.list('/orders).subscribe(items => {
    items.forEach(item => {
      Object.keys(item).map(key=>item[key]).map(order => {
        console.log(order);
      })
    })
  })
}

因此,首先我们获取所有订单,然后使用 forEach 遍历带有订单的每个对象。然后,使用 Object.keys 我们可以访问每个用户的订单。