我有一个应用程序,其中每个用户都有一个与之关联的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
并获取收集。
有没有办法考虑服务器上的发布/订阅规则?
答案 0 :(得分:0)
在服务器上,执行
Counter.findOne({ user_id: this.userId })
为用户获取正确的计数器。