首页 > 解决方案 > 如何为chartjs返回正确的Promise

问题描述

我有一个调用 firebase 的服务,它返回一个承诺。如果 firebase 返回数据,它们将绑定到 chartjs 图表。但不知何故,我得到了一个 Promise 错误。

到目前为止,我尝试改变解决承诺的位置,但我总是遇到同样的错误。当我将返回的数组打印到控制台时,它看起来很完美。

getChart()
  {
    let promise = new Promise((resolve, reject) => {

      let dates: string[] = [];
      let values: number[] = [];
      let response: any = [];

      let res: Observable<BodyFat[]> = this.db.list(this.BASE_PATH, ref => ref.orderByChild(this.DATE).limitToLast(40)).snapshotChanges()
    .pipe(map(items => {
      return items.map(item => {
        let bodyfat = new BodyFat;
        bodyfat.id = item.payload.key;
        bodyfat.date = new Date(item.payload.child(this.DATE).val());
        bodyfat.fat = item.payload.child(this.FAT).val();

        return bodyfat;
      })
    }));

    let i: number = 0;

    res.subscribe(data => {
      data.forEach(element => {

        i++;

        var shortDate = moment(element.date).format('DD.MM.YYYY');

        if(dates.indexOf(shortDate) === -1)
        {
          dates.push(shortDate);
          values.push(element.fat);
        }

        if(i === data.length-1)
        {
          response = {...}
        };

        resolve(response);
        }
      });
    });
    });

    return promise;
  }
    this.bodyfatService.getChart().then(function(data)
    {
      this.bodyFat = new Chart(document.getElementById('bodyFatChart'), data);
    });

目前我收到以下错误: 错误错误:未捕获(承诺中):TypeError:无法读取 null 的属性“长度” TypeError:无法读取 null 的属性“长度”

但我希望能画出图表。也许有一种更简单的方法可以以角度绘制 firebase 数据。顺便提一句。静态数据完美。

标签: angularfirebasechartsangularfire2

解决方案


推荐阅读