Корневой маршрут игнорируется, когда я добавляю маршрут /admin в FlowRouter

Мой домашний маршрут работает, когда он сам по себе:

FlowRouter.route('/', {
  name: 'home',
  triggersEnter: [
    function(context, redirect) {
      var ExperimentsSub, handle, randomExperiment;
      console.log('Home triggers');
      ExperimentsSub = new SubsManager;
      handle = ExperimentsSub.subscribe('randomExperiment');
      if (handle.ready && Experiments.find.count) {
        randomExperiment = Experiments.findOne;
        return redirect('/experiment/' + randomExperiment._id);
      }
    }
  ],
  action: function() {
    console.log('Rendering home');
    return BlazeLayout.render('layout', {
      content: 'home'
    });
  }
});

Но когда я добавляю свой маршрут /admin, вместо этого я перехожу к маршрутам / через маршрут администратора.

FlowRouter.route('/admin', {
  name: 'admin',
  triggersEnter: [console.log('Admin triggers'), !Roles.userIsInRole(this.userId, ['admin']) ? FlowRouter.go(FlowRouter.path('login')) : void 0],
  action: function() {
    console.log('Rendering admin');
    return BlazeLayout.render('layout', {
      content: 'admin'
    });
  }
});

Я знаю это из-за ведения журнала консоли, который я делаю. Когда я перехожу к / с обоими маршрутами, вывод консоли Rendering admin. Почему это происходит, и как я могу это исправить?


person raddevon    schedule 27.11.2015    source источник


Ответы (1)


Проблема была в моих триггерах маршрута администратора. Я не назначал массив функций. Я не понимаю, почему это создало побочные эффекты, которые я видел, но исправление исправило маршрут.

Маршрут с фиксированным свойством триггеров выглядит так:

FlowRouter.route '/admin',
  name: 'admin'
  triggersEnter: [ (context, redirect) ->
    console.log 'Admin triggers'
    unless Roles.userIsInRole this.userId, ['admin']
      redirect FlowRouter.path('login')
  ]
  action: ->
    console.log 'Rendering admin'
    BlazeLayout.render 'layout', content: 'admin'
person raddevon    schedule 28.11.2015