从DynamoDB查询更新ChartJS折线图

时间:2016-12-14 14:59:53

标签: javascript amazon-dynamodb chart.js

我正在尝试显示收集的DynamoDB数据的实时折线图。 该图表包含3个数据范围(最近30天,最近7天,最后24小时)。选择范围时,将查询DynamoDB并创建ChartJS折线图。绘制初始图表后,将每5秒再次查询Dynamo,并使用新查询的结果更新图表。

出于某种原因,.update()调用正在向图表添加重复数据。我确信这是因为查询将提取一些与原始查询相同的数据,但我的印象是更新调用将重新呈现图表的数据,所以我不明白为什么会出现重复数据。

以下是相关代码:

ng-class="shouldIAddAClass()"

我已尝试过其他方法,例如每次都完全重绘图表,但这会导致网页上的闪烁,这很烦人。我不确定如何才能使其工作,以便图表仅使用新数据进行更新。

非常感谢任何帮助或建议。感谢。

1 个答案:

答案 0 :(得分:1)

我编写了一个函数来检查已经存储在数组中的日期,现在它似乎运行良好。

这是功能:

var isinArr = function(str){
  for(i=0; i<DateTimeArr.length; i++){
    if(str === DateTimeArr[i]){
      return true;
    }
  }
  return false;
}

这是更新的chartUpdate()函数:

function chartUpdate(params){
  console.log("Querying DynamoDB");
  docClient.query(params, function(err, data){
    if(err) console.log(err, err.stack);
    else{
      data.Items.forEach(function(item){
        if(!isinArr(item.DateTime.toString())){
          DateTimeArr.push(item.DateTime.toString());
          o2readingArr.push(item.o2percent.toString());
        }
      });
    }
  });
}