【发布时间】:2015-12-25 19:40:35
【问题描述】:
使用 Meteor 编程时,是否可以控制何时将发布(DDP 更新到本地 MiniMongo)推送到订阅的客户端。看起来默认行为是在对关联集合进行任何更改后立即推送更改。在我的应用程序中,这将非常低效并导致许多不必要的更新。
理想情况下,我想做的是延迟推送更改,直到我在另一个集合中有特定更改。
因此,例如,如果我有以下集合以及相关的出版物和订阅:
// Client and server
Scores = new Meteor.Collection('scores');
GameState = new Meteor.Collection('gameState');
Meteor.publish('scores', function(gameId) {
return Scores.find({id: gameId});
});
Meteor.publish('gameState', function(gameId) {
return GameState.find({id: gameId});
});
// Client only
Meteor.subscribe('scores');
Meteor.subscribe('gameState');
我想做的是延迟更新客户端的本地“分数”集合,直到游戏状态达到特定状态。
【问题讨论】:
-
这不是一个完整的答案,但请查看
observeChanges()、docs.meteor.com/#observe_changes - 在服务器端使用它来填充集合并仅在发生所需更改时交付。这是一个灵活但复杂的框架。另见eventedmind.com/tracks/feed-archive/… -
我确实想知道是否可以使用 observeChanges() 和另一个订阅来解决问题。如果在订阅中传递了标志,我能够避免在现有出版物上推送更新,那会更容易(如果不一定是“最佳”方式)。
标签: javascript meteor