2013-08-20 31 views
2

我在一個特定的無線網絡中遇到了一個奇怪的問題:在做collection.find().fetch()時,集合無法訪問並且全部爲空。我可以向minimongo添加新文檔(並找到它們),但我從來沒有看到從mongodb加載的文檔,也沒有將新文檔同步到服務器。請記住,這隻發生在一個特定的無線網絡中。使用的流星端口(似乎被無線網絡封鎖)

只發生在部署到自己的服務器,而不是在部署到meteor.com

流星項目本身這種行爲就是一個文件:

Players = new Meteor.Collection("players"); 

if (Meteor.isClient) { 
    Meteor.subscribe("players"); 
} 

if (Meteor.isServer) { 
    Meteor.publish("players", function() { 
    return Players.find(); 
    }); 
} 

軟件包安裝在

# Meteor packages used by this project, one per line. 
# 
# 'meteor add' and 'meteor remove' will edit this file for you, 
# but you can also edit it by hand. 

preserve-inputs 
standard-app-packages 
insecure 

版本爲0.6.5

我直接在t他Javascript控制檯。

Players.insert({name:'test2'})將創建一個新文檔,但在重新加載後執行Players.find().fetch()時找不到此文檔。在meteor.com上,該文檔在重新加載後找到。

meteor.com部署的地址:我自己部署的http://testcollections.meteor.com/ 地址:http://146.185.130.93/

任何指針將是非常讚賞。

+0

如果您將文檔添加到minimongo,它們是否與實際的mongodb同步? Chrome開發者工具 - >網絡可以幫助獲取更多信息(是否有websocket連接,並且流星是否切換到sockjs) – imslavko

+0

不,我不認爲他們得到了實際的mongodb。我將在Chrome中檢查websocket連接。 – wackazong

+0

無線網絡可能使用代理嗎?只是猜測,但代理服務器可能會搞砸了,所以你可能會在上面提到的網絡檢查之後檢查一下。 – strack

回答

0

這聽起來有點像連接的websocket位沒有連接通過。在流星中有兩個連接,一個靜態包含html,圖像和js(看起來像它的工作),另一個通過websockets處理數據&實時更新。

您可以在Chrome的JavaScript錯誤控制檯中檢查400 websocket錯誤,在這種情況下,它會嘗試放棄長查詢,這需要很長時間。

它可能像是一個令你感到困擾的代理。我已經遇到了這個沒有HTTP代理,但也是一個隱形的襪子代理(通過iptables)。

您也可以通過檢查Meteor.status()來快速檢查,如果上述情況顯示,則表明它正在等待。

+0

我根據你的回答編輯了問題。 – wackazong

+0

如果你添加'autopublish'它有效嗎? ('流星添加autopublish'?)看起來訂閱沒有得到回覆 – Akshat

+0

它不。另外如果添加'autopublish',我的收藏中就沒有內容。我在帶有排行榜示例的同一個網絡環境中嘗試過它,它在那裏工作,獨立於'autopublish'被啓用或不啓用。因此它必須對我的應用程序做些什麼。我會嘗試創建一個最小的測試用例。 – wackazong