如何管理同步到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我的评论是对当前答案的补充,而不是完整答案。