waitOn,subscriptions和onBeforeAction下订阅集合的区别是什么

时间:2016-03-04 06:07:23

标签: meteor iron-router

我想通过以下订阅数据方式获得差异,

使用waitOn

waitOn:function(){
  Meteor.subscribe('//some published function)
 }

使用onBeforeAction

Router.onBeforeAction : function(){
   Meteor.subscribe('//some published function)
 }

使用订阅

subscriptions: function() {
    this.subscribe('items');
   }

1 个答案:

答案 0 :(得分:0)

如果您只想为授权用户发布数据,则可以在onBeforeAction中检查(如果用户已通过身份验证)路由。类似的东西:

Router.map(function(){

  this.route('home', {
    path : '/',
    template : 'home'
  });

  this.route('register', {
    path : '/register',
    template : 'register'
  });

  this.route('login', {
    path : '/login',
    template : 'login'
  });

  this.route('requestlisting', {
    path : '/requestlisting',
    template : 'requestlisting',
    waitOn : function(){
        return Meteor.subscribe('RequestsPublication');
    }
  });
  ...
});

var requireLogin = function () {
   if(!Meteor.user()){
       if(Meteor.loggingIn()){
          this.render(this.loadingTemplate);
       }else{
          Router.go('login');
       }
   } else {
       this.next();
   }
}

Router.onBeforeAction(requireLogin, {only: ['requestlisting',...]});

在此示例中,在onBeforeAction中,仅当用户登录时才会发生“请求列表”路由,之后订阅任何数据都是有意义的。