2016-11-24 2 views
0

사용자의 사용자 이름으로 경로를 만드는 데 문제가 있습니다. 아이디어는 다음과 같습니다. 경로를 클릭하고 해당 사용자 프로필로 이동하십시오. 그의 링크는 다음과 같아야합니다 : http://www.something.com/usersUsername 나는 이것에 관해 인터넷에서 발견 한 모든 것을 시험해 보았습니다. 그러나 이것에 대해 많은 것들이 바뀌 었습니다. 그래서 이것을 관리 할 수 ​​없었습니다. 유용한 점을 발견 한 것은 페이지가 클라이언트를로드 할 때 "경로를 먼저 살펴본 다음 컬렉션에 가입하여 경로가"널 (null) "이된다는 것입니다. 어떤 도움이 필요합니까? 철 : 라우터, 계정-UI, 계정 비밀번호 여기유성 : URL이 userName 인 라우터?

은 코드 :

내 생각은 ... 가입에 대한 waitOn 뭔가를 만들

패키지입니다 시작 페이지, 템플릿 :

<template name="početna"> 
<h1>Dobrodošli!</h1> 
<h3>Registrujte se:</h3> 
    {{> register}} 
<h3>Prijavite se:</h3> 
    {{> login}} 

{{#if currentUser}} 
    <h2>Logovan si!</h2> 
    {{> logout}} 
    <a href="{{pathFor route='profil' username=username }}">Profil</a> 
{{/if}} 

라우터 JS 파일 : 단지 자체에

Router.configure({ 
    layoutTemplate: 'okvir' 
}); 

// * * * * * * // 

Router.route('/', { 
    name: 'početna', 
    template: 'početna', 
}); 

Router.route('/:username', { 
    waitOn: function(){ 
     return Meteor.subscribe('userData'), Meteor.user().username 
      },  
    name: 'profil', 
    template: 'profil', 

}); 

간단한 HTML 템플릿 파일이 작동하는 경우 :

<template name="profil">  
    <h1>RADI</h1> 
</template> 

감사합니다! 여기

+0

정확하게 당신이 직면하고있는 문제가 무엇 : 루나의 대답은 도움이되지만 또한 필요? 'meteor.user(). username'의 값이'waitOn'이나'username' 안에 없나요?'template' 안에 null입니까? – Khang

+0

waitOn 콘솔을 추가하기 전에 waitOn 내부에서 null이 표시되었습니다. 이제는 사용자 이름에 null이 있거나이 문제를 해결하는 방법을 알지 못합니다 ... –

답변

0

루나, 감사를 사용할 수 있습니다! 이름

Template["početna"].helpers({ username: function() { return Meteor.user().username } }) 

2) 게시 = 사용자 이름의 값을 설정 1) 도우미를

Meteor.publish("userData", (username) => { 
    return Meteor.users.find({ 
     username: username 
    }) 
}); 
0

당신은 이동 :

Router.route('/:username',{ 
    name: 'profil', 
    waitOn: function() { 
     return Meteor.subscribe('userData', this.params.username) 
    }, 

    action: function() { 
     this.render('profil', { 
      data: function() { 
       return Meteor.users.findOne({username: this.params.username}); 
      } 
     }); 
    } 
}); 

편집 : this.params.username

아무도 해당 프로필, 사용자를 방문하거나하지 드릴 것입니다. 당신이를 방지하려는 경우, 당신은 도움을 onBeforeAction()

onBeforeAction: function() { 
    if(Meteor.user() && this.params.username == Meteor.user().username){ 
     this.next(); 
    } else { 
     Router.go('/not-authorized') //or any other route 
    } 
}, 
+0

http : // localhost : 3000/null :/.. 단지 새로운 것은 지금 내가 "Loading ..."페이지를 보았다는 것이다. –