8

Quindi, uno degli aspetti più confusi che stavo osservando con Meteor è che le Sessioni vengono cancellate ad ogni aggiornamento. Dal momento che non è un negozio persistente, dove metterei cose come userid, o dove le persone sono nella macchina di stato della mia applicazione?Sessioni persistenti in Meteora

Quali sono i modelli per tali scenari?

risposta

3

Bene, per cominciare, utilizzerei le meteore built in Auth per memorizzare ID utente. Stanno usando la memoria locale di default, credo, ma AFAIK non è un modo semplice per farlo.

Tuttavia, avrei pensato che se vuoi che la roba sopravviva attraverso gli aggiornamenti, devi memorizzarla in mongo o usare l'URL per indicare dove si trova nella "macchina di stato". È possibile utilizzare il router di bootstrap (ad esempio) per utilizzare pushState per modificare l'URL.

9

In realtà ciò che si potrebbe fare è creare una "sottoclasse" di Session che memorizzi il valore nella memoria locale di Amplify quando viene chiamato set(). Avresti automaticamente ereditato tutte le proprietà reattive di Session. Ecco il codice, ha funzionato per me:

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); 
    }, 
}); 

semplicemente sostituire tutti i tuoi Session.set/ricevere telefonate con SessionAmplify.set/ricevere telefonate. Quando viene chiamato set(), viene chiamato il metodo Session padre, nonché amplify.store(). Quando la "sottoclasse" viene creata per la prima volta, carica tutto ciò che si trova nella memoria di amplify all'interno delle sue chiavi, in modo che possano essere recuperate immediatamente con get().

È possibile verificare una variazione di lavoro dell'esempio Classifica qui: https://github.com/sebastienbarre/meteor-leaderboard

+1

Nizza. Ho trovato questo per qualcos'altro, ma userò totalmente questa idea. Grazie, Sebastien! –

+0

+1, funziona magnificamente – danii