簡體   English   中英

如何從服務器上設置的文件范圍變量在客戶端讀取數據?

[英]How to read data on client side from a file scoped variable set on server?

我是流星(和javascript)的新手,正在嘗試制作一個簡單的應用程序,該應用程序將從Web api讀取一些數據並創建圖表。

我檢索到的數據不需要存儲在數據庫中。 我的幼稚方法包括創建一個具有文件作用域的變量來存儲數據,啟動時在服務器上發出一個http請求,然后從客戶端上的變量讀取數據以使用d3.js創建圖表。 稍后,我將添加代碼以指定的時間間隔檢索數據,但是我只想弄清楚如何將數據從服務器傳遞到客戶端。

這是js文件的相關部分...

var dayData = "";

if (Meteor.isServer) {
  Meteor.startup(function () {
    dayData = HTTP.call("GET",
             "http://finance.yahoo.com/d/quotes.csv?s=AAPL+GOOG&f=nb2b3");
    console.log(dayData.content); // check to see data exists 
  });
} 


if (Meteor.isClient) {
  Template.hello.rendered = function () {
    var self = this;

    if (! self.handle) {
      self.handle = Deps.autorun(function () {

        d3.csv.parse(dayData.content, function(data) {
          d3.select("#example")
              .datum(data)
              .call(chart);
        });  
      });
    }
 };

在代碼的客戶端部分中,dayData設置為“”,而不是我已經打印到服務器端代碼的終端上的結果對象的內容。

我的第一個問題是,為什么在客戶端上讀取數據時,dayData變量不包含http請求的結果對象? 我的第二個問題是,以不需要使用數據庫的某種方式讀取服務器上的遠程數據並在客戶端上訪問該數據的最佳實踐是什么?

1)在客戶端上,變量Meteor.isServerfalse ,因此不執行if塊,因此不會發生HTTP調用並且變量不會初始化。

2)使用方法:

var dayData;

...

if(Meteor.isServer) {
  Meteor.methods({
    getDayData: function() {
      return dayData;
    },
  });
}


if(Meteor.isClient) {
  Meteor.startup(function() {
    Meteor.call('getDayData', function(error, result) {
      dayData = result;
    });
  });  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM