簡體   English   中英

雅虎財經,流星與會議

[英]Yahoo Finance, Meteor and sessions

我正在嘗試從Yahoo Finance與Meteor輸出股票信息。 它以前工作過,但我離開該項目已有一段時間了。 我已經更新了流星,所以我認為在更新過程中可能有些問題。 這是我正在使用的軟件包。 https://atmospherejs.com/ajbarry/yahoo-finance

我已經成功地從yahoo抓取了數據,但它似乎沒有傳遞到會話中,因此無法在模板中輸出對象數據。

這是我的客戶javascript代碼。

Template.stock.rendered = function (){
    // if ( _.isEmpty(Session.get('ENW.V')) ) {
        Meteor.call('getQuote', 'ENW.V', function(err, result) {
            Session.set('ENW.V', result['ENW.V']);
            console.log(result);
        });
    // }


        if ( _.isEmpty(Session.get('E4U.F')) ) {
            Meteor.call('getQuote', 'E4U.F', function(err, result) {
                Session.set('E4U.F', result['E4U.F']);
                console.log(result);
            });
        }

};

Template.stock.helpers({
    stock: function() {
        return Session.get('ENW.V');
    },
    stock2: function() {
        return Session.get('E4U.F');
    }
});

這是庫存的html模板

<template name="stock">

<div class="container">
  {{> header}}
</div>

{{>investorsSubNav}}

{{> sidebar}}


<div class="investorsWrap">
<div class="investorsBody">
  <section class="stockBodyHero">

    <div class="stockLeft">    
      <div class="stockCenter"> 
        <h2>Enwave Corporation TSX</h2>
        <ul>
          <li><strong>Symbol</strong>{{stock.symbol}}</li>
          <li><strong>Market Cap</strong> $ {{stock.marketCapitalization}}</li>
          <li><strong>Average Daily Volume</strong> $ {{stock.averageDailyVolume}}</li>
          <li><strong>52 Week Low</strong> $ {{stock.[52WeekLow]}}</li>
          <li><strong>52 Week High</strong> $ {{stock.[52WeekHigh]}}</li>
          <li><strong>Change</strong> {{stock.change}}</li>   
        </ul>
      </div>    
    </div>

    <div class="stockRight">
      <div class="stockCenter">
        <h2>Enwave Corporation FSE</h2>
        <ul>
          <li><strong>Symbol</strong> {{stock2.symbol}} </li>
          <li><strong>Market Cap</strong> $ {{stock2.marketCapitalization}}</li>
          <li><strong>Average Daily Volume</strong> $ {{stock2.averageDailyVolume}}</li>
          <li><strong>52 Week Low</strong> $ {{stock2.[52WeekLow]}}</li>
          <li><strong>52 Week High</strong> $ {{stock2.[52WeekHigh]}}</li>
        </ul>   
      </div>    
    </div>

  </section>
</div>
</div>
</template>

這是服務器端方法

Meteor.methods({
  getQuote: function( stockname ) {
    return YahooFinance.snapshot({symbols: [stockname] , fields:['n','a','b','j1','a2','k','j','c1'] });
  }
});

這是控制台記錄對象時的格式 在此處輸入圖片說明

好的,我想我看到了問題。 讓我們專注於ENW.V:

您正在設置:

Session.set('ENW.V', result['ENW.V']);

並且您的console.log(result)返回:

stock.js:5 [Object]0:
  Object
    52WeekHigh: 1.34
    52WeekLow: 0.69
    ask: 0.89
    averageDailyVolume: 77643
    bid: 0.81
    change: 0.04
    marketCapitalization: "71.84M"
    name: "ENWAVE CORP"
    symbol: "ENW.V"
    __proto__: Object
    length: 1
    __proto__: Array[0]

如果該輸出正確,則沒有ENW.V鍵,並且result[ENW.V']將不確定。

雅虎將返回長度為1的對象數組。我建議對您的助手和模板進行以下更改:

Template.stock.rendered = function (){
  Meteor.call('getQuote', 'ENW.V', function(err, result) {
    Session.set('ENW.V', result[0]); // extract the first element of the array
    console.log(result);
    console.log(Session.get('ENW.V')); // double check
  });
  Meteor.call('getQuote', 'E4U.F', function(err, result) {
    Session.set('E4U.F', result[0]);
            console.log(result);
}

Template.stock.helpers({
  stock: function(symbol) { // this avoids having to create one helper/symbol
    return Session.get(symbol);
  }
});

的HTML:

<template name="stock">
<div class="investorsWrap">
  <div class="investorsBody">
    <section class="stockBodyHero">
      <div class="stockLeft">    
        {{#with stock 'ENW.V'}}
          {{> oneStock}}
        {{/with}}    
      </div>   
      <div class="stockRight">
        {{#with stock 'E4U.F'}}
        {{> oneStock}}
        {{/with}}
      </div>
    </section>
  </div>
</div>

<template name="oneStock">
<div class="stockCenter"> 
  <h2>{{name}}</h2>
  <ul>
    <li><strong>Symbol</strong>{{symbol}}</li>
    <li><strong>Market Cap</strong> $ {{marketCapitalization}}</li>
    <li><strong>Average Daily Volume</strong> $ {{averageDailyVolume}}</li>
    <li><strong>52 Week Low</strong> $ {{this.[52WeekLow]}}</li>
    <li><strong>52 Week High</strong> $ {{this.[52WeekHigh]}}</li>
    <li><strong>Change</strong> {{change}}</li>   
  </ul>
</div>
</template>

暫無
暫無

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

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