2016-02-27 24 views
0

我正在更新流星UI中的d3.js图表​​以响应MongoDB更新。 由于某些原因,在我手动创建到本地MongoDB的更改之前,需要5到10秒之间的任何时间才会反映在图表中。为什么在UI中更新数据库更改之前流星Tracker.autorun期间会有5-10秒的延迟?

下面是代码,也许有人会发现这个延迟的原因:

Template.diagram.rendered = function(){ 

var margin = {top: 20, right: 20, bottom: 30, left: 40}, 
      width = 960 - margin.left - margin.right, 
      height = 500 - margin.top - margin.bottom; 
     x = d3.scale.ordinal() 
     .domain('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')) 
     .rangeRoundBands([0, width], .1); 

     y = d3.scale.linear() 
     .domain([0,0.15]) 
     .range([height, 0]); 
     var xAxis = d3.svg.axis() 
     .scale(x) 
     .orient("bottom"); 
     var yAxis = d3.svg.axis() 
     .scale(y) 
     .orient("left") 
     .ticks(10, "%"); 

     var svg = d3.select("body").append("svg") 
     .attr("width", width + margin.left + margin.right) 
     .attr("height", height + margin.top + margin.bottom) 
     .append("g") 
     .attr("transform", "translate(" + margin.left + "," + 
      margin.top + ")"); 
     svg.append("g") 
     .attr("class", "x axis") 
     .attr("transform", "translate(0," + height + ")") 
     .call(xAxis); 
     svg.append("g") 
     .attr("class", "y axis") 
     .call(yAxis) 
     .append("text") 
     .attr("transform", "rotate(-90)") 
     .attr("y", 6) 
     .attr("dy", ".71em") 
     .style("text-anchor", "end") 
     .text("Frequency"); 

     this.autorun(function(){ 
      var data = Letters.find().fetch(); 
     if (!data.length){ 
      return; 
     } 
     var bars = svg 
     .selectAll(".bar") 
     .data(data, function(d){return d._id;}); 
     bars.enter() 
      .append("rect") 
      .attr("class", "bar") 
      .attr("x", function(d) { return x(d.letter); }) 
      .attr("width", x.rangeBand()) 
      .attr("height",0) 
      .attr("y", height) 
      .transition() 
      .attr("y", function(d) { return y(d.frequency); }) 
      .attr("height", function(d) { return height - 
      y(d.frequency); }); 
     bars 
      .transition() 
      .duration(200) 
      .ease("sin-out") 
      .attr("y", function(d) { return y(d.frequency); }) 
      .attr("height", function(d) { return height - 
      y(d.frequency); }); 
     }); 
    }; 
+0

这是由流星还是别的什么创建的默认dB?只是从标题看来,你听起来好像没有oplog的尾巴。 –

+0

是 - 这是meteor创建的默认数据库之一。如何检查操作日志是否已打开? –

回答

0

一旦我有这个问题张贴在流星论坛上,我指出流星博客文章从2014年起,它描述了oplog拖尾功能,并且事实上它只在默认情况下在dev实例中。这让我意识到,通过在我的开发应用程序中使用MONGO_URL env变量,我迫使我的流星应用程序与MongoDB实例一起工作,这个实例始终在我的Mac上运行,与流星开发无关,因此, ,被我的流星应用程序视为“制作”。一旦我切换应用程序以使用ad-hock mongo connection/db,oplog拖尾生效,我开始立即看到事件传播到浏览器。谢谢,来自流星论坛的@dburles!

相关问题