【发布时间】:2015-01-21 17:38:52
【问题描述】:
我想让ServiceConfiguration 集合与设置集合保持同步。我已经(几乎)使用observeChanges 完成了这项工作,如下所示:
var handle = Settings.find().observeChanges({
changed: function (id, post) {
var insert = {};
post.hostName && (insert.host = post.hostName);
post.domainName && (insert.domain = post.domainName);
ServiceConfiguration.configurations.update({service: "xmpp"}, insert);
}
});
Meteor.publish("Settings", function() {
this.onStop = function () {
handle.stop();
};
return Settings.find();
});
然而,这段代码的问题是发布的onStop 方法被立即调用,而不是在客户端断开连接时调用。我使用该回调的原因是因为 Meteor 文档强调了手动取消 observeChanges 句柄的重要性,但如果我以这种方式取消它,那么我实际上无法观察到集合的更改。但是,如果我不stop() 处理,代码确实可以正常工作。
那么,我可以不停止句柄,否则会导致内存泄漏?或者我应该如何让两个 Meteor 集合保持同步?
【问题讨论】:
标签: javascript meteor