节点 js:Express + ssh2 在加载网页时不会重置我的数据结构
Node js: Express + ssh2 does NOT reset my data structures when loading web pages
要显示用户发送到集群的作业,我有以下代码(简化(:
var split = require('split');
var Client = require('ssh2').Client;
var conn = new Client();
var globalRes;
var table = [["Head_1","Head_2"]];
module.exports = {
renderTable: function(req, res) {
conn.connect({host: 'xx.xx.xx.xx', port: 22, username: 'xxxxx', password: 'xxxxx'});
globalRes = res;
table = [["Head_1","Head_2"]];
conn.on('ready', function() { conn.shell(doSomething);} );
}
}
function doSomething(err, stream) {
stream.on('close', function() {
conn.end();
globalRes.render('index', { HTMLtable: table });
console.log(table);
} );
stream.pipe(split()).on('data', buildTable);
stream.write('qstat -s z'n');
stream.end('exit'n');
}
function buildTable(line) {
var newLine = [1, 2];
if(line.substring(0,6) == "job-ID") {
table.push(newLine);
}
return;
}
它打开一个 ssh 连接,在收到数据后呈现页面。
问题:在我们的示例控制台中,只有第一次正确执行时.log才会显示:
[[ 'Head_1', 'Head_2' ], [ 1, 2 ] ] <<<这很好。>
但是从第一次开始,每次加载页面时,代码都会堆积在"表"数据结构上。换句话说,如果我们第二次重新加载页面(或在另一个浏览器中首次加载同一页面(控制台.log将显示:
[ [ 'Head_1', 'Head_2' ], [ 1, 2 ],[ 1, 2 ]
][ [ 'Head_1', 'Head_2' ], [ 1, 2 ],[ 1, 2 ]
]因此,不仅"table"会获得额外的行 [1,2](它不应该(,而且命令控制台.log 被执行两次。
如果我们第三次加载页面,现在我们会得到:
[ [ 'Head_1', 'Head_2' ], [ 1, 2 ],[ 1, 2 ], [ 1, 2 ]
][ [ 'Head_1', 'Head_2' ], [ 1, 2 ],[ 1, 2 ], [ 1, 2 ]
][ [ 'Head_1', 'Head_2' ], [ 1, 2 ],[ 1, 2 ], [ 1, 2 ]
]"表"随着控制台.log的执行次数而增长。
提前感谢您提供的任何帮助。
好的,问题解决了。我发帖只是以防其他人有类似的问题,这可能会有所启发。
这是由于我的Javascript糟糕的编码实践。如果您将所有内容都包含在函数 renderTable 中,它就会起作用,这是零 (0( 个全局变量。
所有函数,所有变量(重要提示:包括里面的'require(('s(:
module.exports = {
renderTable: function(req, res) {
<<<< Put everything here.
}
}
事实上,这样变量"globalRes"是不必要的,只需使用"res"即可。
希望这有帮助。我不会将我自己的答案标记为正确,因此,如果有人想获得技术并解释失败的具体原因,我会检查该答案是否正确。
相关文章:
- 如何将JSON数据导入我的ejs模板
- 如何检查Json文件更新,如果更新了,则用更新的数据刷新我的页面
- 访问多返回数据结构中的JSON对象
- 我想用所选项目的数据填充我的编辑表单
- 访问数据结构中的元素
- 从我的 jsp 表获取数据到我的弹簧控制器
- 使用javascript将数据从我的页面传递到iframe
- 我如何从php获取数据到我的jquery脚本在所需的json格式
- 如何通过AJAX从外部站点发送数据到我的服务器
- 确定JavaScript中循环数据结构相等的算法
- 如何添加数据到我的firebase上的电子邮件和密码注册使用angularfire2
- 试图通过JSON数据在我的javascript (ASP.Net)循环
- 我应该如何存储is抓取/isLoading数据在我的redux存储
- 我的视图不接收数据从我的控制器
- 写JSON数据到我的HTML文件
- 数据结构存储的分步指南
- 分割数据在我的文本字段
- 如何分配ajax返回数据到我的变量
- 填写任何url的文本框与数据从我的javascript / php代码
- DOM操作和Javascript数据结构:平面的还是结构化的