【发布时间】:2015-05-26 09:14:36
【问题描述】:
我有一个应用程序,其中每个用户都有一个与之关联的 Counter 对象。用户订阅了相应的计数器。
每次用户提交表单时,我都想将用户计数器的当前值保存到表单中。但是,客户端和服务器在使用什么 Counter 对象上存在分歧。
Counters = new Mongo.Collection("counters");
Router.route('/register', { name: 'insertRegistration',
waitOn: function() {
return [ Meteor.subscribe('counters') ];
},
});
RegistrationSchema = new SimpleSchema({
somevalue: {
type: String,
autoValue: function() {
console.log(Counters.findOne()); // Different results on client and server
return "whatever";
}
}
});
if (Meteor.isServer) {
Meteor.publish('counters', function() {
return Counters.find({ user_id: this.userId });
});
}
客户端上的Counters.findOne() 选择与当前用户关联的 Counter 对象。
服务器上的Counters.findOne() 从所有 Counter 对象的集合中挑选一个 Counter 对象。
我认为这是因为客户端请求Counters 并获得它所订阅的内容,而服务器请求Counters 并获得集合。
有没有办法考虑服务器上的发布/订阅规则?
【问题讨论】: