2014-09-25 72 views
1

我有发布方法依赖于用户状态:发布这取决于用户状态

Meteor.publish('myGroup', function() { 
    if (this.userId != null) { 
    var user = Meteor.users.findOne(this.userId); 
    return Group.find(user.profile.groupId); 
    } else { 
    return []; 
} 
}); 

当用户状态变化(user.profile.groupId),我没有得到新的数据。我可以通过刷新浏览器来修复它。

我试图解决这个问题,通过使认购反应:

Tracker.autorun(function() { 
    var user = Meteor.user(); // depend on user 
    if (user != null) { 
    Meteor.subscribe('myGroup'); 
    } 
}); 

但它似乎并没有工作。解决这个问题的最好方法是什么?

+0

你可以看到你的自动运行功能实际上是对用户改变运行? – Shaded 2014-09-25 15:31:40

+0

是的,自动运行在用户更改上运行。实际上,经过测试,此代码按预期工作。 – Jakozaur 2014-09-27 22:37:37

回答

0

传递未使用的参数似乎是最好的解决方法:

Meteor.subscribe("myGroup", user.profile.groupId); 
+0

由于客户端决定组标识,因此不安全。这不是推荐的。 – kahonmlg 2015-02-21 09:03:30

+0

服务器根本不使用此参数。虽然我同意你需要小心user.profile的允许/拒绝规则。 – Jakozaur 2015-02-25 01:45:51