2016-02-27 26 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!

相關問題