如何管理同步到Meteor客户端的数据';s缓存?

如何管理同步到Meteor客户端的数据';s缓存?,meteor,Meteor,我修改了排行榜示例以使用两个集合: Players = new Meteor.Collection("players"); Tasks = new Meteor.Collection("tasks"); Players集合包含示例中定义的6个文档 > db.players.count() 6 Tasks集合有48000个文档 > db.tasks.count() 48000 我一打开浏览器,节点就跳到100%CPU,客户端就看不到任何任务记录 Players.find().co

我修改了排行榜示例以使用两个集合:

Players = new Meteor.Collection("players");
Tasks = new Meteor.Collection("tasks");
Players集合包含示例中定义的6个文档

> db.players.count()
6
Tasks集合有48000个文档

> db.tasks.count()
48000
我一打开浏览器,节点就跳到100%CPU,客户端就看不到任何任务记录

Players.find().count()
6
Tasks.find().count()
0
我尝试定义查询条件,但这只在服务器上有效,在客户端没有帮助

Players.find({name:"Claude Shannon"}).count();
1
Tasks.find({tid:"t36254"}).count();
0
我猜48000个文档太多,无法同步。这会导致节点挂起100%的CPU,客户端抛出如下错误:


如何防止同步所有内容并仅从收藏中检索特定文档?

Meteor的自动发布功能将您的所有收藏发布到客户端,它给人留下了深刻印象,让您的工作变得快速,但它有点像Rails的脚手架功能——对真正的应用程序不是很有用——它是用于学习和原型制作的

默认情况下,Meteor会自动将集合中的每个文档发布到每个连接的客户端。要关闭此行为,请删除包:

$meteor删除自动发布


然后,学习使用手动发布和订阅功能,它为您提供了所需的控制:

部分答案似乎是禁用自动发布功能。Autopublish使简单的示例“只适用于”少数文档,但它不适用于更多数据。在项目目录中,使用“meteor remove autopublish”。然后编写自己的发布和订阅函数。同时删除不安全的:meteor removeinsecure@radtek:为了安全起见,我们必须删除
不安全的
包,这一点非常重要,但需要注意的是,删除它根本不能回答原始问题。@Clawsy我的评论是对当前答案的补充,而不是完整答案。