2013-10-28 34 views
0

我想我缺少一些簡單的東西。我已經部署了我的流星應用兩個站點:Meteor.js:提交的帖子在meteor.com和modulus.io服務器上部署時不顯示,儘管在我的計算機上一切運行正常

http://servyc.meteor.com
http://servyc-9594.onmodulus.net/

在這兩種情況下,似乎數據庫不將數據發送到客戶端。例如,如果您在網站上註冊併發布優惠或請求,則它不會顯示在主頁的底部,而應該顯示在主頁的底部。我無法檢查數據是否實際發佈爲servyc.meteor.com。但我可以檢查servyc-9594.onmodulus.net,並且數據確實進入數據庫(託管廣告mongohq)。

奇怪的是,當我在我的Mac上運行它時,該站點正常工作:數據被髮送並被髮送到客戶端。我部署時需要做些特別的事情嗎?在沒有特殊設置的情況下部署時,Meteor.subscribe()命令可能無效?我覺得奇怪的是,對於模數主機,數據進入數據庫但不會被髮送出去。

乾杯,

+0

您是否正在發佈以及訂閱?你是否刪除了'autopublish'? – Akshat

+0

是的,我正在客戶端上訂閱,並在服務器上發佈。在部署到兩臺主機(meteor.com和modulus.io)之前,我在Mac上刪除了autopublish。 –

回答

0

從什麼樣子,你還沒有處理,其中數據尚不可用在客戶端上的情況。

我試圖登錄,並顯示您的訂閱/發佈功能沒問題。如果你檢查你的JavaScript控制檯,你可以看到一些關於如何定義某些東西的錯誤。

原因是當流星加載到瀏覽器上時,所有的集合都是空的。你需要顯示數據時,允許它是空考慮到這一點,而不是閱讀的東西e.g

var myDocument = Docs.findOne(); 
return myDocument.date; 

如果你做這樣的事情最初myDocument不存在,它仍然無效。當數據最終從客戶端準備好時,它會在幾秒鐘後提供。你只需要處理這個案例而不會導致錯誤。

這發生在遠程站點上,而不是在本地mac上,因爲這些站點有額外的延遲,所以在本地mac上可能不會發生這種情況,因爲數據已經很快就可用。但是,在遠程站點上需要一些額外的時間,因爲它遠離您的計算機。

+0

謝謝你。你能建議我如何處理這種情況?我應該在代碼中實現一個延遲(使用'setTimeout'或其他等效的python time.sleep()命令)?我認爲最好的解決方案是讓瀏覽器上的流星加載之前讓客戶端瀏覽器等待,直到數據可用。乾杯, –

+0

沒有像你只需要檢查變量存在,例如'返回myDocument && myDocument.date'。由於流星是被動的,它會隨着變化自動調整。如果你有一些在啓動時運行的東西,把它放在一個'Deps.autorun'中,這樣當新數據到達時它可以再次運行 – Akshat

+0

我試圖在Deps.autorun塊中放置我的'Meteor.subscribe()'語句,但是沒有做的伎倆。我不明白爲什麼收集變量不會自動更新 - 我認爲這些是默認情況下的被動源。你能否指出一些資源來解決這個問題?另外,我已經放置了Lat&lng座標會話變量,使用Amplify ...但是這些加載速度不夠快。我應該使用deps.autorun來使這些會話變量具有反應性嗎?謝謝! –

相關問題