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

时间:2017-08-10 14:28:12

标签: javascript angular firebase-realtime-database angularfire2 ng2-charts

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

我正在使用ng2-charts,firebase中的数据和angular2 app。

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

我到目前为止的代码是这样的,但我没有得到任何结果回到图表,只是一个平坦的结果。

chart

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
        }
      })

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

chart2

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

1 个答案:

答案 0 :(得分:0)

所以我自己想出来了。

在构造函数中,我得到了staffId。这是正常的,并通过以下方式拉出类似这样的内容:

-Kr9q2Te04rlXWLyQ6PJ76F

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

Kr9q2Te04rlXWLyQ6PJ76F

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

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