如何管理哪些数据同步到Meteor客户端的缓存?

mb.*_*mb. 6 meteor

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

Players = new Meteor.Collection("players");
Tasks = new Meteor.Collection("tasks");
Run Code Online (Sandbox Code Playgroud)

Players集合具有示例中定义的6个文档.

> db.players.count()
6
Run Code Online (Sandbox Code Playgroud)

Tasks集合有48,000个文档.

> db.tasks.count()
48000
Run Code Online (Sandbox Code Playgroud)

一旦打开浏览器,Node就会跳转到100%CPU,客户端无法看到任何任务记录.

Players.find().count()
6
Tasks.find().count()
0
Run Code Online (Sandbox Code Playgroud)

我尝试定义查询条件,但这只适用于服务器,对客户端没有帮助.

Players.find({name:"Claude Shannon"}).count();
1
Tasks.find({tid:"t36254"}).count();
0
Run Code Online (Sandbox Code Playgroud)

我猜测48,000个文档太多无法同步.这导致Node以100%CPU和客户端挂起这样的错误:http://i.imgur.com/zPcHO.png.

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

Mat*_*son 18

Meteor的自动发布,将所有的集合发布到客户端,非常令人印象深刻,使得工作变得快速,但它有点像Rails脚手架功能 - 对真正的应用程序不是很有用 - 它用于学习和原型设计.

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

$ meteor删除autopublish

然后,学习使用手动发布和订阅功能,它为您提供所需的控制:http://docs.meteor.com/#publishandsubscribe