流星的登出问题

时间:2016-02-24 22:17:33

标签: meteor iron-router logout

我使用以下路径在铁路由器中注销

Router.route('/logout',{
    name: 'logout',
    onBeforeAction: function(){

        Meteor.logout(function(err){
            console.log('logging out' + Meteor.userId());
            Router.go('/');
        });
    }
 });

当我的应用程序触发时,它在我的应用程序的许多地方使用:

Template._loginButtonsLoggedInDropdown.events({

    'click #login-buttons-logout': function (event) {
        event.preventDefault();
        Router.go('/logout');
    }
});

它在任何地方都可以正常工作,但它无法从一个模板注销;实际上是注销但是在20秒左右之后;此特定模板具有3个反应模板的变量和2.onCreated函数中定义的2个预订。 我正在寻找任何提示,为什么它如此缓慢,如果我应该以其他方式关闭模板或订阅?或任何其他原因导致它如此缓慢地退出..

没有路由器的

版本工作原理相同(意味着注销仍需要20秒)

'click #login-buttons-logout': function (event) {
    event.preventDefault();
    Meteor.logout(function(err){
        console.log('logging out' + Meteor.userId());
        Router.go('/');
    });
}

2 个答案:

答案 0 :(得分:0)

没有理由使用路由进行注销。只需按如下方式更改事件处理程序:

Template._loginButtonsLoggedInDropdown.events({
    'click #login-buttons-logout': function (event) {
        event.preventDefault();
        Meteor.logout(function() {
          Router.go('/');
        }
    }
});

摆脱路线'退出'。

答案 1 :(得分:0)

问题是我的订阅,虽然我不完全理解为什么。

我的代码是:

Template.observedQuestions.onCreated(function(){
    var self = this;
    self.autorun(function(comp){
        self.subscribe('observedQuestionsFeed');
    });
});

然后我改为:

Template.observedQuestions.onCreated(function(){
    computation = Tracker.autorun(function(thisComp){
        status = Session.get('loggingOut');
        console.log('tracker started ' + status);
        mySubscription = self.subscribe('observedQuestionsFeed');
        if (status){
            thisComp.stop();
        }
    });

});

我在那里手动停止计算并运行。

谢谢大家的帮助。