Javascript 铁路由器基本路由和用户路由

Javascript 铁路由器基本路由和用户路由,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,目前我正在用Meteor.js构建一个社交网络,并且面临一个路由问题。这就是所需的路由器行为: 在“/”上,如果用户未登录,则重定向到具有登录名的语言页面 在“/”上,如果用户已登录,则获取其用户名并通过“/:username”重定向到配置文件页面 在“/:username”上,通过传递的用户名抓取用户并呈现其个人资料 这就是我的解决方案: Router.map -> @route 'base', path: '/' waitOn: -> wa

目前我正在用Meteor.js构建一个社交网络,并且面临一个路由问题。这就是所需的路由器行为:

  • 在“/”上,如果用户未登录,则重定向到具有登录名的语言页面
  • 在“/”上,如果用户已登录,则获取其用户名并通过“/:username”重定向到配置文件页面
  • 在“/:username”上,通过传递的用户名抓取用户并呈现其个人资料
  • 这就是我的解决方案:

    Router.map ->
    
      @route 'base', 
    
        path: '/'
    
        waitOn: ->
          waitOnUser()
    
        action: ->
    
          say 'base route'
          user = Meteor.user()
    
          if user? 
    
            say 'redirecting to username from base route'
            username = user.profile.username
            @redirect '/user/' + username
    
          else
    
            @redirect 'hello'
    
      @route 'profile', {
    
        path: 'user/:username'
        layoutTemplate: 'mainLayout'
        template: 'profileLayout'
    
        waitOn: ->
    
          [ 
            waitOnUser(),
            Meteor.subscribe('pageOwner', @params.username)
          ]
    
        onBeforeAction: ->
    
          Session.set('profileOwner', Meteor.users.findOne({'profile.username': @params.username}))
          @next()
    
        data: ->
    
          if @ready()
    
            user = Meteor.users.findOne({'profile.username': @params.username})
            profile = user.profile
            id = user._id
            owner = Meteor.user().profile.username is profile.username
            {
              profile: profile
              userId: id
              owner: owner
            }
    
        action: ->
    
          @render()
    
    waitOnUser = ->
    
      user = Meteor.user()
    
      handle = 
    
        ready: ->
    
          if user?
            true
          else
            false
    
    问题是每次调用“/:username”并重定向到登录用户主页时,基本路由都会工作,因此无法查看其他用户的页面


    您能为我的案例提出更好的解决方案吗?

    找到了解决方案,只需更改路由定义的顺序,以便在“base”之前调用“profile”路由