考虑模板之外的发布/订阅规则(Meteor)

时间:2015-05-26 00:53:03

标签: meteor meteor-autoform

我有一个应用程序,其中每个用户都有一个与之关联的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并获取收集。

有没有办法考虑服务器上的发布/订阅规则?

1 个答案:

答案 0 :(得分:0)

在服务器上,执行

Counter.findOne({ user_id: this.userId }) 

为用户获取正确的计数器。