我在一个特定的无线网络中遇到一个奇怪的问题:在执行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
我直接在Javascript控制台中进行测试。
Players.insert({name:'test2'})
将创建一个新文档,但在重新加载后执行Players.find().fetch()
时找不到此文档。在meteor.com上,重新加载后会找到该文档。
meteor.com部署地址:http://testcollections.meteor.com/
我自己部署的地址:http://146.185.130.93/
非常感谢任何指针。
答案 0 :(得分:0)
听起来有点像连接的websocket位没有通过连接。在流星中有两个连接,一个静态包含html,图像和js(看起来像它的工作),另一个通过websockets来处理数据和实时更新。
您可以在Chrome的javascript错误控制台中查看400个websocket错误,在这种情况下,它会尝试删除长轮询,这需要一段时间。
它可能像代理人一样困扰着你。我在没有HTTP代理但是也是一个看不见的袜子代理(通过iptables)的情况下遇到了这个问题。
如果上述情况属实,您可以通过查看Meteor.status()
来表示其'等待'来快速检查。