流星铁-路由onBeforeAction

Meteor iron-route onBeforeAction

我的 Meteor 应用程序中有这个简单的 Iron-router 路由,每当任何用户需要注销应用程序时我都会使用它,尽管每当我调用这个路由时我都会收到以下错误。有人可以告诉我我做错了什么/在这里遗漏了什么吗?谢谢

请注意,Meteor.logout return 没有任何错误

Router.route('/logout', function(){
  Meteor.logout(function(err){
      if(err){
        console.log('Error Logging out: '+ err);
      }
      this.redirect('home');
  });
});

错误:

 Route dispatch never rendered. Did you forget to call this.next() in an onBeforeAction?

Exception in delivering result of invoking 'logout': TypeError: undefined is not a function
    at http://localhost:3000/both/router/routes.js?8871acf5e06150f7af89862f68c245a05fe13db8:110:12
    at http://localhost:3000/packages/accounts-base.js?7c29db5c21a76726509bb6bb2a68a2b4b1ecf657:674:19

Meteor.logout 回调中的范围与 Router.route 回调中的范围不同。这就是为什么您需要将 Router.route 的范围分配给变量 self,然后在 Meteor.logout 回调中使用它。

Router.route('/logout', function(){
  var self = this;
  Meteor.logout(function(err){
      if(err){
        console.log('Error Logging out: '+ err);
      }
      self.redirect('home');
  });
});