2017-08-11 15 views
0

私は解決できない問題を抱えています。私はSOや他のどこかで不幸にも関連する解決策を見つけることができません。ただ1つのセッション変数が定義されていません

基本的には、データ付きの3つの配列をクライアントのJavascriptに送信したいだけです。その2つの配列のための正常に動作しますが、私はブラウザでページをリフレッシュするときに3番目の空が空になり、私はなぜか分かりません。

heres関連コード;

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に配列を送信するコードをHeresします。

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

これについては解決策が見つかりません。私は文字通りすべてを試みましたが、私はこのエラーが発生し続けます。 詳細な解決方法が高く評価されています。私の完全なコードは総でたらめである場合

それは、バックエンドのWeb開発に関する私の最初の試みですが、あまりにも難しいことではありません^^事前に

感謝。

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

これは、クエリのスコープの変数外部からアクセスできるようになります。

関連する問題