2016-08-20 2 views
0

ich ein Login-Skript auf einem node.js Server haben, so dass, wenn sich ein Benutzer anmeldet, erstelle ich ein neues Objekt für den Benutzer, zum Beispiel:Javascript neues Objekt zugänglich in allen Bereichen machen

// MOCK-UP: NOT ACTUAL CODE 

db.query('QUERY', function(err, rows, fields){ 

     if(!err){ 

      var User = new _User(row[0].id, row[0].name, ...); 
      // Continue on 

     } else { throw err } 

}); 

Jetzt wie kann ich es so machen, dass ich immer noch ein neues _User-Objekt jedes Mal erstellen, wenn sich jemand anmeldet und es global zugänglich machen. Ich möchte alle aktuellen Benutzerinformationen in einer Klasse speichern und in der Lage sein, sie zu jedem beliebigen Zeitpunkt einfach wiederzufinden und alle Klassenmethoden zu verwenden.

EDIT: Ich weiß nicht, ob nur var Player; irgendwo an der Spitze zu initialisieren ist eine gute Idee, da es überschrieben wird. Ja, ich brauche einen Ratschlag :)

P.S.: Login-Skript ist in einem Socket-Ereignis, und ich habe nichts dagegen, den Code neu zu schreiben, um die Anpassungen zu passen!

P.P.S: Ich möchte nicht die Informationen innerhalb des Sockels speichern.

+0

Sie können nicht einen einzigen globalen Server verwenden, um einen Benutzer in einer Serverumgebung zu verfolgen, da alle Benutzeranfragen auf denselben globalen Satz zugreifen, sodass verschiedene Benutzer nur die Daten des jeweils anderen Benutzers übersteuern. Was Sie hier wollen, ist eine Sitzung. Ich würde vorschlagen, Express und Express-Session zu verwenden. Dadurch wird automatisch ein Sitzungsobjekt für jeden Benutzer für alle Anforderungshandler verfügbar gemacht. Sie können dann speichern, was Sie in diesem Sitzungsobjekt wünschen, und es wird nur für die Anforderungen dieses Benutzers verfügbar sein. – jfriend00

+0

@ jfriend00 Aber das Gleiche ist mit einer Steckdose, nicht wahr? Das ist, was ich gerade benutze, möchte aber eine separate Benutzerklasse haben. – Micard

+0

Ich weiß nicht, was Sie mit 'Aber das Gleiche ist mit einem Socket, nicht wahr?' Wenn ein Socket eine Verbindung zu einem Benutzer darstellt, können Sie einfach eine '.user' -Eigenschaft zum Socket-Objekt selbst hinzufügen . – jfriend00

Antwort

1

Wenn ein Socket eine Verbindung zu einem Benutzer darstellt, können Sie dem Socket-Objekt selbst eine socket._user-Eigenschaft hinzufügen. Wenn Sie dann Methoden auf Ihrem User-Objekt möchten, können Sie dem User-Konstruktor einen Prototyp hinzufügen.

Verwandte Themen