我修改了排行榜示例以使用两个集合:
Players = new Meteor.Collection("players");
Tasks = new Meteor.Collection("tasks");
Players集合包含示例中定义的6个文档。
> db.players.count()
6
Tasks集合有48,000个文档。
> db.tasks.count()
48000
我一打开浏览器,Node就跳转到100% CPU,客户端看不到任何任务记录。
Players.find().count()
6
Tasks.find().count()
0
我尝试定义查询条件,但这只在服务器上有效,在客户端没有帮助。
Players.find({name:"Claude Shannon"}).count();
1
Tasks.find({tid:"t36254"}).count();
0
我猜48,000个文档太多了,无法同步。这会导致Node挂在100%的CPU上,而客户端抛出如下错误:http://i.imgur.com/zPcHO.png。
如何防止同步所有内容而仅从集合中检索特定文档?
发布于 2012-04-27 19:19:32
Meteor的autopublish将你所有的集合发布给客户端,非常令人印象深刻,让事情运行得很快,但它有点像Rails的脚手架功能-对真正的应用程序来说不是很有用-它是为了学习和原型。
默认情况下,Meteor会自动将集合中的每个文档发布到每个连接的客户端。要关闭此行为,请删除软件包:
$ meteor删除自动发布
然后,学习如何使用手动的发布和订阅函数,这些函数为您提供了所需的控件:http://docs.meteor.com/#publishandsubscribe
https://stackoverflow.com/questions/10346057
复制相似问题