2013-10-27 14 views
5

W mojej meteorowej aplikacji używam sesji do przechowywania tymczasowych informacji o aktywności użytkownika. Chciałbym zachować niektóre części tych informacji w przeglądarce za pomocą amplify.js, ale nie wszystkie.Meteor js: make Obiekt sesji częściowo trwały

Chciałbym mieć sposób na "tymczasowe" klucze sesji i "trwałe" klucze sesji. Np mogę zadzwonić

Session.set('persistent', 'this is persisted to browser memory'); 
Session.set('temporary', 'this will be erased on page reload, etc'); 

a następnie po przeładowania strony

Session.get('persistent'); // returns 'this is persisted to browser memory' 
Session.get('temporary'); // returns undefined 

znalazłem a related post on SO ale oszczędza to podejście utrzymuje się cały obiekt Session, który nie chce robić. Ponadto, nie chcę używać MongoDB do tego, chciałbym, aby pamięć była czysto po stronie klienta ...

Z góry dziękuję!

+1

Z tego co rozumiem, połączony poczta będzie pracować dla Ciebie. Skorzystaj ze zwykłej 'Sesji', gdy chcesz mieć 'tymczasowe' klucze sesji i użyj rozszerzonej' SessionAmplify', gdy chcesz "trwałe" klucze sesji. – dayuloli

Odpowiedz

9

Użyj localStorage. Jest to trochę trudne, jeśli ma to być bierna, ale myślę, że można użyć Session aby ta odbywa się równolegle localStorage

Podczas uruchamiania uzyskać element z przeglądarki localStorage słoiku

Meteor.startup(function() { 
    Session.set("yourItem", localStorage.getItem("yourItem")); 
}); 

Podczas ustawiania go :

localStorage.setItem("yourItem", "yourValue"); 
Session.set("yourItem", localStorage.getItem("yourItem")); 

Jedna rzecz, że nie jest możliwe, chyba że używasz MongoDB, czy coś jest, jeśli ustawisz na jednej karcie, to przyzwyczajenie zmienić na innych, aż odświeżyć stronę. Ale wydaje mi się, że sesja jest taka.

+1

Zgadzam się z localstorage, chociaż użyłbym funkcji amplify (która funkcjonuje jako interfejs na localstorage, ciasteczka i podobne rzeczy). –

+0

dlaczego potrzebujemy "sesji"? –

+1

@VictorFerreira Aby było reaktywne. localStorage sam nie jest reaktywny. – Akshat

6

Udało mi się skorzystać z pakietu u2622:persistent-session, korzystając z możliwości lokalnej pamięci masowej amplify.js, a jednocześnie umożliwiając korzystanie z obiektu Meteor Session do ustawiania i uzyskiwania dostępu do informacji.

Po wykonaniu meteor add u2622:persistent-session można potem iść i zrobić rzeczy jak:

  • Session.setPersistent(key, value)
  • Session.setDefaultPersistent(key, value)

u2622:persistent-session utrzymuje swoje dane po kartach i załadunków, chyba że ręcznie wyczyścić przeglądarki Lokalny magazyn.

kasie Github page uzyskać więcej informacji