我遇到了一个无法解决的问题,我无法在SO或其他地方找到任何相关的解决方案。
基本上我只想将3个带数据的数组发送到客户端Javascript。它适用于2个阵列,但是当我在浏览器中刷新页面时,第3个变为空,我不知道为什么。
见下相关代码;
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();
});
}
}
继承代码以将Arrays发送到客户端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 :(得分: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();
});
这将使变量可以在查询范围之外访问。