在刷新页面时,如何重新加载mysql表



我有这个简单的代码,当我在浏览器上运行它时,第一次将mysql表加载到那之后,当我刷新页面时,直到我kiill the kiill the kiill并重新运行它时,它才加载。我试图每60秒介绍该页面,以便它会自动从表中获得新的更新。我该怎么做?

我创建了池,并在表中显示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/');
});

如果我刷新页面,则应显示新数据。

您在最高级别声明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();
  });

最新更新