Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
meteor中的chart.js未从上下文中提取数据_Meteor_Charts_Iron Router_Chart.js - Fatal编程技术网

meteor中的chart.js未从上下文中提取数据

meteor中的chart.js未从上下文中提取数据,meteor,charts,iron-router,chart.js,Meteor,Charts,Iron Router,Chart.js,回答我自己:问题(其中一个问题)似乎是我期待着一个数字数组,而我在集合中拥有的是一个包含数字的数组。。。因此,需要对数组进行解析,以隔离我要查找的数据。一旦我掌握了一系列数字,事情就变得容易多了 下面是从数组中提取正确字段的代码,然后对其进行处理以便使用: var lvl_min_raw = _.compact(_.pluck(EDC_DATA.find({session_id: Session.get("current_session_id")},{fields: {lvl_min:

回答我自己:问题(其中一个问题)似乎是我期待着一个数字数组,而我在集合中拥有的是一个包含数字的数组。。。因此,需要对数组进行解析,以隔离我要查找的数据。一旦我掌握了一系列数字,事情就变得容易多了

下面是从数组中提取正确字段的代码,然后对其进行处理以便使用:

    var lvl_min_raw  = _.compact(_.pluck(EDC_DATA.find({session_id: Session.get("current_session_id")},{fields: {lvl_min: 1}}).fetch(),'lvl_min'));
    var lvl_min_ints =  _.map(lvl_min_raw.map(Number), function(num){ return num - 256; });


    var lvl_max_raw  = _.compact(_.pluck(EDC_DATA.find({session_id: Session.get("current_session_id")},{fields: {lvl_max: 1}}).fetch(), 'lvl_max'));
    var lvl_max_ints = _.map(lvl_max_raw.map(Number), function(num){ return num - 256; });

    var lvl_avg_raw  = _.compact(_.pluck(EDC_DATA.find({session_id: Session.get("current_session_id")},{fields: {lvl_avg: 1}}).fetch(), 'lvl_avg'));
    var lvl_avg_ints = _.map(lvl_avg_raw.map(Number), function(num){ return num - 256; });

    var lvl_median_raw  = _.compact(_.pluck(EDC_DATA.find({session_id: Session.get("current_session_id")},{fields: {lvl_median: 1}}).fetch(), 'lvl_median'));
    var lvl_median_ints = _.map(lvl_median_raw.map(Number), function(num){ return num - 256; });

    var  label_array_length = lvl_median_ints.length; 
    var lvl_labels_raw = Array.apply(null, {length: label_array_length}).map(Number.call, Number)
    var lvl_labels_short = _.map(lvl_labels_raw.map(String), function(str){ return str; });
工作代码在这里:以防其他人遇到这种情况。希望能有帮助

=================================================================

我正在将大量WiFi设备的遥测数据加载到mongo数据库中,并希望实时显示各个设备的指标,以便解决信号电平和其他问题。为此,我设置了一个简单的meteor应用程序来访问数据。我现在正在尝试使用meteor中的chart.js来提供实时图形

我正在解决的问题是,我可以实时显示任何wifi会话的列表数据,但我似乎无法用相同的数据填充图形。我相当肯定这是一个上下文问题,但在谷歌搜索了8个小时左右之后,我不明白如何正确访问上下文来填充数据

实际误差为:

Tracker afterFlush函数异常:未定义不是函数(评估“新图表(lvlCtx).line(数据)”)

路由器如下所示:

   Router.configure({
      layoutTemplate: 'layout',
      loadingTemplate: 'loading',
      waitOn: function() { return Meteor.subscribe('Edc_Data'); },

    });

    Router.route('/', {
                name: 'activityList'
                });

    Router.route('/:session_id', {
                name: 'sessionPage',
                data: function() { return EDC_DATA.find({session_id: this.params.session_id},{sort: {_id: -1}}); }


    });
    <template name="sessionPage">

    <div class="navbar-header">
    Path: /session_id
  </div>

  WiFi Levels:
   <div> <canvas id="lvlChart" width="400" height="400"> </canvas> </div>

  Raw Data  
  <div>
  {{#each this}}  
     <p> {{household_id}} | {{time}} | {{session_id}} | {{lvl_min}} | {{lvl_max}} | {{lvl_avg}} | {{lvl_median}} | {{lvl_stddev}}</p>
  {{/each}}

  </div>
</template>
function drawChart(){        

        var data = {

          labels: this.time,

          datasets: [       

            {
                label: "lvl_min",
                data: this.lvl_min,
                color:"#F38630"
            },
            {
                label: "lvl_max",
                data:  this.lvl_max,
                color : "#E0E4CC"
            },
            {
                label: "lvl_avg",
                data:  this.lvl_avg,
                color : "#69D2E7"
            },          
            {
                label: "lvl_median",
                data: this.lvl_median,
                color : "green"
            },
            {
                label: "lvl_stddev",
                data: this.lvl_stddev,
                color : "red"
            }      
        ]
        };

          var lvlCtx = $("#lvlChart").get(0).getContext("2d");
          var lvlChart = new Chart(lvlCtx);
          new Chart(lvlCtx).line(data);

}
Template.sessionPage.rendered = function(){
    Deps.autorun(function () { drawChart();
                 });
};
模板如下所示:

   Router.configure({
      layoutTemplate: 'layout',
      loadingTemplate: 'loading',
      waitOn: function() { return Meteor.subscribe('Edc_Data'); },

    });

    Router.route('/', {
                name: 'activityList'
                });

    Router.route('/:session_id', {
                name: 'sessionPage',
                data: function() { return EDC_DATA.find({session_id: this.params.session_id},{sort: {_id: -1}}); }


    });
    <template name="sessionPage">

    <div class="navbar-header">
    Path: /session_id
  </div>

  WiFi Levels:
   <div> <canvas id="lvlChart" width="400" height="400"> </canvas> </div>

  Raw Data  
  <div>
  {{#each this}}  
     <p> {{household_id}} | {{time}} | {{session_id}} | {{lvl_min}} | {{lvl_max}} | {{lvl_avg}} | {{lvl_median}} | {{lvl_stddev}}</p>
  {{/each}}

  </div>
</template>
function drawChart(){        

        var data = {

          labels: this.time,

          datasets: [       

            {
                label: "lvl_min",
                data: this.lvl_min,
                color:"#F38630"
            },
            {
                label: "lvl_max",
                data:  this.lvl_max,
                color : "#E0E4CC"
            },
            {
                label: "lvl_avg",
                data:  this.lvl_avg,
                color : "#69D2E7"
            },          
            {
                label: "lvl_median",
                data: this.lvl_median,
                color : "green"
            },
            {
                label: "lvl_stddev",
                data: this.lvl_stddev,
                color : "red"
            }      
        ]
        };

          var lvlCtx = $("#lvlChart").get(0).getContext("2d");
          var lvlChart = new Chart(lvlCtx);
          new Chart(lvlCtx).line(data);

}
Template.sessionPage.rendered = function(){
    Deps.autorun(function () { drawChart();
                 });
};
自动运行如下所示:

   Router.configure({
      layoutTemplate: 'layout',
      loadingTemplate: 'loading',
      waitOn: function() { return Meteor.subscribe('Edc_Data'); },

    });

    Router.route('/', {
                name: 'activityList'
                });

    Router.route('/:session_id', {
                name: 'sessionPage',
                data: function() { return EDC_DATA.find({session_id: this.params.session_id},{sort: {_id: -1}}); }


    });
    <template name="sessionPage">

    <div class="navbar-header">
    Path: /session_id
  </div>

  WiFi Levels:
   <div> <canvas id="lvlChart" width="400" height="400"> </canvas> </div>

  Raw Data  
  <div>
  {{#each this}}  
     <p> {{household_id}} | {{time}} | {{session_id}} | {{lvl_min}} | {{lvl_max}} | {{lvl_avg}} | {{lvl_median}} | {{lvl_stddev}}</p>
  {{/each}}

  </div>
</template>
function drawChart(){        

        var data = {

          labels: this.time,

          datasets: [       

            {
                label: "lvl_min",
                data: this.lvl_min,
                color:"#F38630"
            },
            {
                label: "lvl_max",
                data:  this.lvl_max,
                color : "#E0E4CC"
            },
            {
                label: "lvl_avg",
                data:  this.lvl_avg,
                color : "#69D2E7"
            },          
            {
                label: "lvl_median",
                data: this.lvl_median,
                color : "green"
            },
            {
                label: "lvl_stddev",
                data: this.lvl_stddev,
                color : "red"
            }      
        ]
        };

          var lvlCtx = $("#lvlChart").get(0).getContext("2d");
          var lvlChart = new Chart(lvlCtx);
          new Chart(lvlCtx).line(data);

}
Template.sessionPage.rendered = function(){
    Deps.autorun(function () { drawChart();
                 });
};
当我加载页面时,错误控制台中将显示错误“Tracker afterFlush function的异常:undefined不是一个函数(评估'new Chart(lvlCtx).line(data)')”。该模板将呈现页面上画布下方{{{each this}}…{{/each}}块中的项目。由此我推断,上下文正在传递给模板,但没有传递给charts函数,因此没有填充data:字段,从而导致错误

如何访问图表函数中的上下文,以便正确填充数据参数?非常感谢您的帮助