代码之家  ›  专栏  ›  技术社区  ›  Brian Revie

ng2为某些员工ID绘制Firebase display预订图表

  •  0
  • Brian Revie  · 技术社区  · 8 年前

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

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

    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 回复  |  直到 8 年前
        1
  •  0
  •   Brian Revie    8 年前

    所以我自己解决了这个问题。

    在构造器中,我得到了木桩。它很好地解决了这个问题,并且正在通过这样的身份证:

    -Kr9q2Te04rlXWLyQ6PJ76F
    

    Kr9q2Te04rlXWLyQ6PJ76F
    

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

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