Meteor에서 관찰 해본 더 혼란스러운 측면 중 하나는 세션이 새로 고침 될 때마다 정리된다는 것입니다. 그것은 영구 저장소가 아니기 때문에 어디에서 사용자 ID를 넣을 것인가, 또는 사람들이 내 응용 프로그램의 상태 시스템에 어디에 놓을 것입니까?Meteor의 지속적인 세션
이러한 시나리오의 패턴은 무엇입니까?
Meteor에서 관찰 해본 더 혼란스러운 측면 중 하나는 세션이 새로 고침 될 때마다 정리된다는 것입니다. 그것은 영구 저장소가 아니기 때문에 어디에서 사용자 ID를 넣을 것인가, 또는 사람들이 내 응용 프로그램의 상태 시스템에 어디에 놓을 것입니까?Meteor의 지속적인 세션
이러한 시나리오의 패턴은 무엇입니까?
글쎄, 처음에는 유성 built in Auth을 사용하여 사용자 ID를 저장하려고합니다. 그들은 기본적으로 로컬 저장소를 사용하고 있습니다.하지만 AFAIK에는 쉽게 접근 할 수있는 방법이 없습니다.
그러나 새로 고침 할 때 물건을 생존 시키려면 mongo에 저장하거나 URL을 사용하여 '상태 시스템'에 표시해야한다고 생각했을 것입니다. 부트 스트랩 라우터 (예 :)를 사용하여 pushState
을 사용하여 URL을 변경할 수 있습니다.
실제로 당신이 할 수있는 일은 set()이 호출 될 때 Amplify의 로컬 스토리지에 값을 저장하는 Session의 "서브 클래스"를 만드는 것입니다. Session의 모든 반응 특성을 자동으로 상속받습니다. 여기에 코드입니다, 그것은 나를 위해 일한 :
SessionAmplify = _.extend({}, Session, {
keys: _.object(_.map(amplify.store(), function(value, key) {
return [key, JSON.stringify(value)]
})),
set: function (key, value) {
Session.set.apply(this, arguments);
amplify.store(key, value);
},
});
그냥 SessionAmplify.set/얻을 통화와 모든 Session.set/얻을 전화를 교체합니다. set()이 호출되면 부모 Session 메서드가 호출되고 amplify.store()도 호출됩니다. "서브 클래스"가 처음 만들어지면, 그것은 amplify의 저장소에있는 모든 것을 그 키 안에로드하여 get()으로 즉시 검색 할 수있게합니다. https://github.com/sebastienbarre/meteor-leaderboard
니스 :
당신은 여기에 리더 예제의 작업 변화를 테스트 할 수 있습니다. 나는 이것을 다른 것으로 찾았지만 완전히이 아이디어를 사용할 것입니다. 고마워, 세바스찬! –
+1,이 작품은 아름답게 작동합니다. – danii