【问题标题】:Nodejs express fetch from mysqldb and refresh tableNodejs 从 mysqldb 快速获取并刷新表
【发布时间】:2022-01-13 02:37:38
【问题描述】:

我有一个 .ejs 文件,其中显示了一个表单,该表单在提交时将数据发送到 MySQL 数据库。然后,同一页面使用数据库中的数据呈现两个表。问题是提交表单后我无法刷新表格,我必须重新启动服务器才能查看新数据。

这是 index.js 文件(快速应用):

const express = require('express');
const app = express();
const db = require('./database');
const path = require('path');
const { v4: uuidv4 } = require('uuid');

// set and use express evironment
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
app.use('/public', express.static(path.join(__dirname, 'public'))); // to serve static files
let bodyParser = require('body-parser');
app.use(bodyParser.json());       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));


// load DB tables
let arribos = [];
db.connect(function(err) {
  if (err) throw err;
  db.query('SELECT * FROM sv_hotel_in ORDER BY hora_creacion DESC', function(err, result, fields) {
    if (err) throw err;
    arribos = result;
  });
});

let partidas = [];
db.connect(function(err) {
  if (err) throw err;
  db.query('SELECT * FROM sv_hotel_out ORDER BY hora_creacion DESC', function(err, result, fields) {
    if (err) throw err;
    partidas = result;
  });
});

// render hotel form page
app.get('/hotels', (req, res) => {
    res.render('hotel_index', { arribos, partidas });
});

我想我知道会发生什么。当我运行服务器时,变量“arribos”和“partidas”会加载数据库中的当前数据。但是在我从页面提交表单后,变量仍然是相同的,它们没有获取新数据,这就是为什么我需要重新启动服务器以便它们再次加载并显示所有数据。 我该如何解决这个问题?

【问题讨论】:

  • 向我们展示你的 ejs 代码

标签: javascript mysql node.js express


【解决方案1】:

您可以像这样将代码放在路由路径回调中。

app.get('/table-data', (req, res) => {
db.connect(err => {
     if (err) {
         return res.send(err.message)
     }
     db.query('SELECT * FROM sv_hotel_in ORDER BY hora_creacion DESC', (err, 
result, fields) => {
          if (err) {
             return res.send(err.message)
         }
         res.send(result);
     })

})
})
 

【讨论】:

  • 那行不通。即使我正在查询的表中有数据,它也没有显示任何内容。
  • 试试 console.log(result) 并告诉我。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 2015-06-29
  • 1970-01-01
  • 2015-11-01
  • 2022-03-17
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多