2015-07-14 11 views
5

ogni volta che la pagina viene ricaricata, corro questa funzione:Sails JS - Sessioni

init: function(req, res) 
{ 
    console.log("Session: "); 
    console.log(req.session); 

    if (req.session.player_id !== undefined) 
    { 
     Player.getPlayer(req.session.player_id); 
    } 
    else 
    { 
     req.session.player_id = sails.uuid.v4(); 
     req.session.save(); 
     console.log("Session saved"); 

     Player.createPlayer(req.session.player_id); 
     console.log("Creating player: " + req.session.player_id); 
    } 
} 

Il problema è che ogni volta che esegue

console.log("Session: "); 
    console.log(req.session); 

Il player_id non c'è, e ogni tempo in cui la pagina viene ricaricata, l'istruzione if restituisce false.

console.log("Creating player: " + req.session.player_id); 

restituisce il valore corretto, ma non riesco a capire perché la sessione non segue l'utente in ogni pagina ricarica?

+0

1. Per confrontare * non definito * è meglio usare **! == **. 2. Cosa mostra in 'console.log (req.session.player_id);'? – Bulkin

+0

1. Grazie per il suggerimento. 2. Dove vuoi dire? –

+0

Tranne per 'console.log (req.session);' – Bulkin

risposta

5

Sembra che la soluzione era semplice come questo:

res.send(req.session); 

Se posso aggiungere questo al fine della altro-dichiarazione, la sessione verrà memorizzato e può essere riutilizzato.

Perché è così, non lo so. Se qualcuno ha voglia di elaborare, sii mio ospite.

+2

Nota: la proprietà non verrà archiviata nello store di sessione né disponibile per altre richieste fino a quando non viene inviata la risposta. Da: http://sailsjs.org/documentation/concepts/sessions –