ng2-charts Firebase 显示某些员工 ID 的预订

ng2-charts Firebase display bookings for certain staff ID

在我的应用程序中进行预订时,用户会选择他们想要的员工。我正在尝试在员工页面上显示一个图表,以显示他们在过去 7 天内的订单数量。

我正在使用 ng2-charts、firebase 中的数据和 angular2 应用程序。

目前数据库中只有 2 个预订。每个工作人员 1 个。

我现在的代码是这样的,但是我没有得到返回图表的结果,只是一个平线结果。

ngOnInit() {

    this.af.list('/orders', {
      query: {
        orderByChild: 'createdAt',
        limitToLast: 1
      }
    }).subscribe((res) => {
      let lastOrder: any = res;
      var lastDate: any = lastOrder[0].createdAt;
      var x;
      var dayDuration = 86400000;//milliseconds = 24 hours
      x = 7;
      lastDate -= 6 * dayDuration;

      for (var i = 0; i < x; i++) {
        this.barData.labels.push(this.datePipeEn.transform(lastDate, 'dd MMMM'));
        lastDate += dayDuration;
      }

      this.af.list('/orders', {
        query: {
          orderByChild: 'staffId',
          equalTo: this.staffId
        }
      }).subscribe((res) => {
        this.orders = res;
        this.order = res.length;
        for (var i = 0; i <= this.barData.labels.length - 1; i++) {
          var dayValue = 0;
          for (var j = 0; j <= this.orders.length - 1; j++) {
            var orderDate = this.datePipeEn.transform(this.orders[j].createdAt, 'dd MMMM');
            if (orderDate === this.barData.labels[i]) {
              dayValue += this.orders[j].grandTotal;
            }
          }
          this.barData.datasets[0].data.push(this.order);
        }
      })
    });

  }

如果我删除函数中的第二个查询:

this.af.list('/orders', {
        query: {
          orderByChild: 'staffId',
          equalTo: this.staffId
        }
      })

我在图表中得到了这个结果。

我想看到的是图表中生成日期的一个订单,而不是现在显示的所有订单的计数(没有第二次查询)。

所以我自己想出来了。

在构造函数中,我正在获取 staffId。它变得很好,并且正在通过以下方式拉出这样的 ID:

-Kr9q2Te04rlXWLyQ6PJ76F

我的问题是,我在数据库中存储了一个没有附加破折号的员工 ID,如下所示:

Kr9q2Te04rlXWLyQ6PJ76F

因此它在查询中不匹配。所以我所做的是使用字符串 slice() 函数删除破折号然后它起作用了!

let staffId = response.$key;
var str = staffId;
var res = str.slice(0, 1);