2015-10-16 79 views
0

我從Yelp Search API獲取結果到Meteor.js應用程序的客戶端集合中。我成功地將結果插入到客戶端集合中(結果只是暫時存儲)。從瀏覽器控制檯:在流星中使用助手迭代和發佈數組值

Object {region: Object, total: 3720, businesses: Array[10]} 

businesses陣列包含10個結果,我想進入模板輔助和顯示在一個表中:

businesses: Array[10] 
0: Object 
1: Object 
2: Object 
3: Object 
4: Object 
5: Object 
6: Object 
7: Object 
8: Object 
9: Object 

數組中的每個對象包含字段,以及甚至更多的數組,如我需要在表中訪問的「名稱」和「星星」。

我已成功獲得幫助以訪問該文檔(使用region,totalbusinesses),但我無法獲取其下的值。這是據我已經得到了:

Template.YelpAdd.helpers({  
results: function() { 
      return YelpSearchResults.find().businesses; 
     } 
}); 

在模板:

<table> 
      <tr> 
       <th>Name</th> 
       <th>Type</th> 
       <th>Neighborhood</th> 
       <th>Address</th> 
      </tr> 
      {{#each results}} 
        <tr> 
         <td>{{name}}</td> 
         <td>...</td> 
         <td>...</td> 
         <td>...</td> 
        </tr> 
      {{/each}} 
</table> 

我知道這是可能的,我只是卡住。也許有另一種方法可以在將結果插入YelpSearchResults客戶端集合之前通過操縱結果來完成此操作。

+1

'YelpSearchResults'中是否有多個文檔?如果否,那麼我認爲你想'YelpSearchResults.findOne()。企業;'。如果是的話,那麼你是否想把所有的「商業」結合到一個陣列中? –

+0

將來可能會有多個文檔在集合中,但現在,一次只能有一個文檔。謝謝@DavidWeldon。 – shaunjacobsen

回答

1

find返回一個遊標。這聽起來像是你想要findOne它返回一個文檔(你可以用它來訪問businesses列表)。這給一試:

Template.YelpAdd.helpers({  
    results: function() { 
    var yelpResult = YelpSearchResults.findOne(); 
    return yelpResult && yelpResult.businesses; 
    } 
}); 

請注意,我的情況下添加一個guard的叫喊結果不是實際可用的助手第一次運行時。