我使用了这个简单的代码,当我在浏览器上运行此代码时,第一次加载mysql表,此后,当我刷新页面时,它不会加载,直到我杀死进程并重新运行它。 我试图每60秒引荐该页面一次,以便它将自动从表中获取新更新。 我该怎么办?
我创建了Pool,并在表中显示mysql结果。 它仅显示一次,之后刷新页面时不会更新
const http = require('http');
const mysql = require('mysql');
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'alerts',
charset: 'utf8'
});
var reo ='<html><head><title>POWER CUT ALERT</title></head><body><h1>POWER CUT ALERT</h1>{${table}}</body></html>';
function setResHtml(sql, cb){
pool.getConnection((err, con)=>{
if(err) throw err;
con.query(sql, (err, res, cols)=>{
if(err) throw err;
var table =''; //to store html table
//create html table with data from res.
for(var i=0; i<res.length; i++){
table +='<tr><td>'+ (i+1) +'</td><td>'+ res[i].timestamp +'</td><td>'+ res[i].device_id +'</td></tr>';
}
table ='<table border="1"><tr><th>Nr.</th><th>Timestamp</th><th>IMEI NO</th></tr>'+ table +'</table>';
con.release(); //Done with mysql connection
con.destroy();
return cb(table);
});
});
}
let sql ='SELECT * from alerts';
const server = http.createServer((req, res)=>{
setResHtml(sql, resql=>{
reo = reo.replace('{${table}}', resql);
res.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
res.write(reo, 'utf-8');
res.end();
});
});
server.listen(8080, ()=>{
console.log('Server running at //localhost:8080/');
});
如果刷新页面,应该会显示新数据。
答案 0 :(得分:0)
您要在顶层声明reo
,然后在第一次运行方法时替换{${table}}
,直到永远更改。您需要改为在新变量中执行此操作。要修复它,请替换为:
setResHtml(sql, resql=>{
reo = reo.replace('{${table}}', resql);
res.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
res.write(reo, 'utf-8');
res.end();
});
具有这样的内容:
setResHtml(sql, resql=>{
var reo2 = reo.replace('{${table}}', resql);
res.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
res.write(reo2, 'utf-8');
res.end();
});