目前,我正在使用Meteor.js构建一个社交网络,并面临一个路由问题。这是必需的路由器行为:
这是我的解决方案:
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‘并将其重定向到登录的用户主页时,基本路由都会工作,因此不可能查看其他用户页面。
你能为我的案子提出更好的解决方案吗?
发布于 2015-06-16 23:30:04
找到解决方案,只需更改路由定义的顺序,以便“配置文件”路由在“base”之前被调用。
https://stackoverflow.com/questions/30693376
复制相似问题