2017-06-11 2 views
0

Ich programmiere ein webbasiertes Spiel und möchte Variablen in jeder Ansicht teilen.nodejs mit express: Variablen für jede Ansicht

Jeder Benutzer hat sein eigenes Rennen erstellt und jedes Rennen hat viele Variablen drin. dh - Rohstoffe {Geld, Energie, ...} Planeten {im Besitz, gebaut, ...}

Ich möchte diese Werte auf jeder Seite zeigen, nachdem ein Benutzer sich anmeldet. Diese Werte werden sich alle ändern Zeit, zu der ein Benutzer eine Aktion ausführt.

für nein, ich bin mit Helfer-Modul

dbValues.commodities = function(userId, callback){ 
    Race.findOne({"owner.id" : userId}, function(err, race){ 
     if(err){ 
      console.log(err) 
     } else { 
      var money = race.commodities.money; 
      var energy = race.commodities.energy; 
      var metals = race.commodities.metals; 
      var techs = race.commodities.techs; 
      var soldiers = race.commodities.soldiers; 
      callback(money, energy, metals, techs, soldiers); 
     } 
    }); 
} 

Ich möchte auf jeder Strecke Aufruf dieser Funktion zu vermeiden, da diese nur die Werte für Rohstoffe sind.

Können Sie mir einen Rat geben, wie Sie das tun?

Ich möchte es teilweise verwenden, was auf jeder Seite nach dem Login gleich sein wird. Gibt es eine Möglichkeit, es teilweise zu platzieren? Für andere Seiten, die ich speziell anzeigen möchte, kann ich diese Funktion im Router aufrufen.

Antwort

0

könnten Sie verwenden Express-Sitzung:

var app=require("express")(); 
var sess=require("express-session"); 
app.use(sess({secret:"somerandom"}); 

Jetzt kann jeder Express.request eine Sitzung Eigenschaft hat, wich ist persistent pro Benutzer:

app.get("/",function(req,res){ 
    if(!req.session){ 
    Race.findOne({"owner.id" : userId}, function(err, race){ 
    if(err){ 
     console.log(err) 
    } else { 
     req.session= race.commodities; 
     res.end(race.commodities.money); 
    } 
    }); 
    }else{ 
    res.end(req.session.commodities.money); 
} 

So bei der ersten Anfrage , die Datenbank wird angefordert und die Daten werden zwischengespeichert. Bei der zweiten Anforderung werden die gespeicherten Daten ohne erneutes Laden von der Datenbank abgerufen.