流星中的注销问题

logout problems in meteor

我正在使用以下路径在 iron-router 中注销

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 个反应模板的变量和 .onCreated 函数中定义的 2 个订阅。 我正在寻找任何提示为什么它这么慢以及我是否应该以其他方式关闭模板或订阅?或任何其他原因导致它退出这么慢..

没有路由器的版本工作相同(意味着注销仍然需要 20 秒)

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

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

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

并去掉路由 'logout'。

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

我的代码是:

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();
        }
    });

});

我手动停止计算并且它有效。

谢谢大家的帮助。