我对meteor中的订阅/发布有疑问。
当您订阅meteor中的发布时,客户端数据库是在服务器数据库的某个时刻更新还是只复制了一份?
事实上,Meteor会在订阅后更新本地数据库,还是只是在T是订阅时刻的T时刻的服务器数据库的图像?当我在客户端调用Collection.find()时,我能获得最后的数据吗?
答案 0 :(得分:1)
快速回答是,只要您的订阅仍处于活动状态,Meteor将根据您在publish()方法中定义的规则使客户端与服务器保持同步。它不是时间T的副本,它从时间T开始,并随着服务器集合的变化而修改。
例如:
/server/publish/people.js:
Meteor.publish('people', function() {
return People.find();
}
/client/app.js:
Meteor.subscribe('people');
发布()' People.find()'将被监视,并且将在客户端上复制对查询的任何更改。如果您在客户端上有反应性查询(例如模板助手中的People.find()),则会自动重新执行这些查询并更新模板(请参阅Tracker)。
很好的参考资料:https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/