2017-08-11 71 views
0

我有一個問題,我無法解決,我不能找到任何相關的解決方案,因此或其他地方,不幸。只有一個會話變量undefined

基本上我只是想發送3數組與數據到客戶端的Javascript。它的2陣列工作正常,但第三個變空了,當我在瀏覽器刷新頁面,我不知道爲什麼。

繼承人的相關代碼;

app.post("/", function(req, res) { 
ssn = req.session; 
ssn.anlagen = []; 
var Betreiber = { 
    TableName: "XXX", 
    KeyConditionExpression: "#usr = :user", 
    ExpressionAttributeNames: { 
     "#usr": "User", 
    }, 
    ExpressionAttributeValues: { 
     ":user": req.body.name 
    }, 
}; 

docClient.query(Betreiber, function(err, data) { 
    if (data.Count == 0 || req.body.passwort != data.Items[0].Passwort) { 
     res.render(__dirname + '/views/login', {text: "Der Nutzername oder das Passwort sind falsch! Bitte versuchen Sie es erneut."}); 
    } 
    else if (req.body.passwort == data.Items[0].Passwort) { 
     anlagenarray = []; 
     ssn.user = data.Items[0].User; // WORKS FINE 
     ssn.admin = data.Items[0].Admin; // WORKS FINE 
     if (ssn.admin == false) { // Normal 
      for (var i = 0; i < data.Items[0].Anlagen.length; i++) { 
       ssn.ident = data.Items[0].Anlagen[Object.keys(data.Items[0].Anlagen)[i]]; 
       var Anlagenbezeichnung = { 
        TableName: "SCR-Anlagen", 
        KeyConditionExpression: "#ident = :id", 
        ExpressionAttributeNames: { 
         "#ident": "Id", 
        }, 
        ExpressionAttributeValues: { 
         ":id": ssn.ident 
        }, 
       }; 

       docClient.query(Anlagenbezeichnung, function(err, data) { 
        ssn.anlagen = data.Items[0].Bezeichnung // this Variable gets "[]" after refresh 
        ssn.anlagen.sort(); 
       }); 
      } 
     } 

繼承人代碼發送數組到客戶端JS;

app.post("/anlagen", function(req, res) { 
    if (ssn.user) { 
     res.send({ 
      name: ssn.user, // WORKS 
      adminstatus: ssn.admin, // WORKS 
      bezeichnungen: ssn.anlagen // [] after Page refresh 
     }); 
    } 
    else { 
     res.render(__dirname + '/views/login'); 
    } 
}); 

我只是找不到任何解決方案。我從字面上試了一切,但我一直得到這個錯誤。 高度讚賞詳細的解決方案。

這是我第一次嘗試在後端網絡的發展,不要太用力,如果我的完整代碼是總廢話^^

在此先感謝。

+0

是否有代碼缺失?我沒有看到你在哪裏設置密鑰「Bezeichnung」 –

+0

theres缺少很多代碼。這與問題無關。我只把相關的代碼。 「data.Items [0] .Bezeichnung」是來自發電機數據庫的數據。 – tipsfedora

回答

0

我自己修復了這個問題。

如果您有類似的問題。只需在查詢中放入req.session.save();即可。

這樣的:

docClient.query(params, function(err, data) { 
req.session.bezeichnung.push([data.Items[0].Bezeichnung,data.Items[0].Id]);  
req.session.save(); 
}); 

這將使查詢範圍的變量訪問之外。