2015-11-16 61 views
1

我正在用流星構建一些小日誌報告。

有一個簡單的死表,它應該包含從外部mongodb服務器收到的所有數據。

的HTML:

<tbody> 
    {{#each impressions}} 
    <tr> 
    {{> impression}} 
    </tr> 
    {{/each}} 
</tbody> 

JS:

Meteor.subscribe('impressions'); 
... 
... 
Template.logResults.helpers({ 
'impressions': function() { 
var sTs = Router.current().params.fromTs; 
var eTs = Router.current().params.toTs; 
return Impressions.find({}); 
} 
}); 

到目前爲止,一切都很好。但是,當我改變了查詢到這一個:

Impressions.find({ 
    $and: [{ 
    ts: { 
     $gte: sTs 
    } 
    }, { 
    ts: { 
     $lte: eTs 
    } 
    }] 
}); 

的結果沒有在HTML DOM持續顯示, 我試圖調試,並創造了這個確切的查詢的執行console.log, 和令人驚訝的是所有正確的結果都成功返回到控制檯

截圖附。 我可能做錯了什麼,也許與發佈/訂閱的東西。

幫助某人?

謝謝.. P.S.我刪除了不安全和經銷商的發佈, 對服務器文件夾

Meteor.publish('impressions', function() { 
    return Impressions.find(); 
}); 

此代碼,並在主lib文件夾此代碼

Impressions = new Mongo.Collection("banners"); 

enter image description here

+0

並試圖使用.fetch();但它返回空數組。 – daniel592

+0

我的預感是,這是一個字符串到整數轉換的問題。 ets和sts應該是數字嗎? –

+0

是的,他們應該... 編輯:OMG wooot?!首先,非常感謝你! secound,你有很大的預感, 第三,爲什麼結果在控制檯上返回而不是在HTML上? – daniel592

回答

1

的路由器存儲的參數當前路由爲字符串(這是合理的,因爲URL是字符串),所以您需要在查詢數據庫之前將值顯式轉換爲整數。給這樣的一個嘗試:

var sTs = Number(Router.current().params.fromTs); 
var eTs = Number(Router.current().params.toTs); 

注:

  1. parseIntparseFloat可能會根據您的輸入的性質是更好的選擇。有關更多詳細信息,請參閱this question
  2. 您可以在路由器本身進行類型轉換,並將數據上下文中的值傳遞給助手。請參閱鐵路由器指南的this section
  3. 我懷疑它在鍵入到控制檯時工作,因爲您使用數字而不是字符串。例如。 ts: {$gte: 123}而不是ts: {$gte: '123'}
+0

哇,驚人的解釋!非常感謝!!!非常感激! – daniel592

+0

沒問題。 :)請考慮將答案標記爲[接受](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 –

+0

當然:)再次感謝。 – daniel592