2014-11-25 4 views
0

간단하고 미니멀 한 diary app을 만들었습니다. 클라이언트에 사용자 관련 데이터 게시

, 나는 (A MongoDB를 모음에 저장) 사용자가 만든 항목에 가입
Meteor.subscribe('entries', Meteor.userId()); 

를 사용합니다. 나는 (서버) 게시 기능에 사용자 ID를 전달 : 그것은 반응성 데이터 소스이기 때문에

로그인 후
Meteor.publish('entries', function(userID) { 
    return Entries.find({userId: userID}); 
}); 

, Meteor.userId()는 더 이상 falsy되지 않습니다. 그러나 관련 데이터는 게시되지 않습니다. 나는하여 구독 기능을 자동으로 실행한다는 고정 :

그것은 작동하지만, 나는 그것이 나쁜 솔루션입니다 생각합니다.

여기에 질문이 있습니다. 일반적으로 사용자 관련 데이터를 게시해야합니까? 사용자 ID를 publish-function에 전달하는 것보다 더 나은 방법이 있어야합니다. 또한 불안하지 않습니까? 그런데

는 응용 프로그램 당신은 가입에서 사용자 ID를 통과 할 필요가 없습니다

+0

게시 기능에서 호출 사용자의 ID를 안전하게 검색하는 'this.userId'에 액세스 할 수 있습니다. - 편집 : 질문에 대한 답이되어야한다고 생각합니다! 그렇게 게시하길 원하십니까? –

+0

오. 나는 'this'를 통해 현재 사용자에 대한 액세스 권한이 있다는 것을 알지 못했습니다. 고마워! – Pueggel

답변

1

에 대한 몇 가지 의견을 듣고 싶어요. publish 함수 내에서 this.userId을 사용하여 현재 사용자를 얻을 수 있습니다. 사용자가 로그인하지 않은 경우 빈 배열을 반환 할 수도 있습니다.

Meteor.publish("entries", function() { 
    if (!this.userId) return []; 
    return Entries.find({ userId: this.userId }); 
}); 
+0

고마워요! 그래서 일반적으로 publish 함수 내부의 서버에서'this.userId'를 사용하여 사용자 관련 데이터를 얻습니다. – Pueggel

+0

예, 사용자가 ID를 보낼 수 있으므로 구독 (또는 메소드 호출)에서 가져 오지 않으려합니다. – user3557327