2014-05-16 8 views
2

나는 가장 다음 코드를 사용하여 설명하는 상황이 있습니다유성/철 라우터 : 다른 데이터에 따라 데이터를 대기하는

Meteor.publish('users', function (name) { 
    return Users.find({name: name}); 
}); 


Meteor.publish('posts', function (userId) { 
    return Posts.find({userId: userId}, {sort: {insertDate: 1}}); 
}); 

사용자가 많은 게시물을 가지고 있습니다. 그래서, URL을 때 내가 사용자의 ID를 알 필요가 특정 사용자에 대한 게시물을 찾기 위해 너무

http://example.com/john 

이다. 이제

나는이 다음 컨트롤러 : 이제

UserController = RouteController.extend({ 
    onBeforeAction: function() {}, 
    waitOn: function() { 
     var userSub = Meteor.subscribe('user', this.params.name); 
     return [userSub]; 
    }, 
    data: function() { ... }, 
    action: function() { 
     if (this.ready()) { 
      this.render('user'); 
     } 
     else { 
      ;//this.render('loading'); 
     } 
    } 
}); 

난 단지 waitOn 사용자, 그러나 나는 또한 waitOn 소식에 할 수 있지만 필요한 게시물에 가입하기 때문에 나는이 작업을 수행 할 수있는 방법 사용자를 알기 위해 :

Meteor.subscribe('posts', user._id); 

어떤 제안이 있습니까?

+0

네가 맞아.하지만 내가 선택한 대답은 내가 원하는 건 아니야. 그러나 'David Weldon'이주는 답은 유일한 정답 일 수 있습니다! –

+0

그 대답은 구현하기 쉽고 이해하기 쉽지만 반응이 없습니다. 그래서 귀하의 경우에는 더 많은 게시물이 추가됩니다 그들은 클라이언트에 게시되지 않습니다. 그것이 문제가되지 않는다면, 당신은 모두 설정됩니다. 그것이 그렇다면, 나는 나의 대답에 더 많은 아이디어를 아래에 추가했다. –

답변

5

유성에 조인하는 순간은 까다 롭습니다. 좋은 정보는 this post에서 찾을 수 있습니다. 간단한 리액션 조인의 경우 경로에서 직접 수행 할 수 있습니다 ("클라이언트 조인"섹션에서 설명). 여기에 사용자에 대한 예입니다/게시물 가입 :

가 아닌 반응을 찾고 있다면, 위의 설명에서 언급 한 바와 같이
UserController = RouteController.extend({ 
    waitOn: function() { 
    Meteor.subscribe('user', this.params.name); 
    }, 
    data: function() { 
    return Users.findOne({name: this.params.name}); 
    }, 
    onBeforeAction: function() { 
    if (this.data()) { 
     var userId = this.data()._id; 
     this.subscribe('posts', userId).wait(); 
    } 
    } 
}); 

당신이 내 대답 here을 볼 수 있습니다 가입 할 수 있습니다. 서버의 리 액티브 조인의 경우 this question을 권하고 싶습니다.

+0

답변과 매우 유용한 링크에 대해 감사드립니다 !! +1 –

+1

이것은 나에게 맞지 않습니다. irouter API가 원래 게시물 이후로 변경되었지만 onBeforeAction의 코드를 구독 블록에 넣으면이 작업이 가능했다고 생각합니다. 내가 당신이 기다릴 수 없다는 것을 안다 .BeforeAction – Nath

+2

안녕하세요,'Meteor.subscribe ('posts', userId);를 사용하는 것이 좋습니다. Nath가 발견 한 것처럼''wait''를 호출 할 수 없습니다. onBeforeAction' - Nath, 코드를 서브 스크립 션 블록에 넣는 방법에 대해 자세히 설명해 주시겠습니까? 감사! –

관련 문제