2015-07-14 10 views
5

Jedes Mal, wenn die Seite neu geladen wird, betreibe ich diese Funktion:Sails JS - Sessions

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

Das Problem ist, dass jedes Mal, wenn ich

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

Die player_id laufen nicht da ist, und jeder Wenn die Seite neu geladen wird, gibt die if-Anweisung false zurück.

Gibt den richtigen Wert zurück, aber ich kann nicht herausfinden, warum die Sitzung nicht folgt dem Benutzer auf jeder Seite neu laden?

+0

1. Zum Vergleich mit * undefined * verwenden Sie besser **! == **. 2. Was zeigt es in 'console.log (req.session.player_id);'? – Bulkin

+0

1. Danke für den Vorschlag. 2. Wo meinst du das? –

+0

Mit Ausnahme von 'console.log (req.session);' – Bulkin

Antwort

5

Es scheint, dass die Lösung, da dies so einfach war:

res.send(req.session); 

Wenn ich das Ende der Else-Anweisung hinzufügen, wird die Sitzung gespeichert und kann wiederverwendet werden.

Warum es so ist, weiß ich nicht. Wenn jemand Lust hat zu arbeiten, sei mein Gast.

+2

Hinweis: Die Eigenschaft wird erst im Sitzungsspeicher gespeichert oder für andere Anforderungen verfügbar, bis die Antwort gesendet wird. Von: http://sailsjs.org/documentation/concepts/sessions –