【发布时间】:2021-07-30 08:19:59
【问题描述】:
所以,基本上我是在尝试链接两个ejs文件来表达。第一个已连接并显示结果,但在第一个按下按钮后出现的第二个显示错误。
user-list 文件正确显示结果,但完全相同的表代码在parks 中显示错误
parks.ejs(当我点击 user-list 中重定向到这里的链接时,它显示 userData 未定义)
<div class="table-data">
<h2>Display Data using Node.js & MySQL</h2>
<table>
<tr>
<th>ID</th>
<th>Station N</th>
<th>Edit</th>
<th>Delete</th>
</tr>
<%
if(userData.length!=0){
var i=1;
userData.forEach(function(data){
%>
<tr>
<td><%=i; %></td>
<td><%=data.Station %></td>
<td><a href="/users/edit/<%=data.id%>">Edit</a></td>
<td><a href="/users/delete/<%=data.id%>">Delete</a></td>
</tr>
<% i++; }) %>
<% } else{ %>
<tr>
<td colspan="7">No Data Found</td>
</tr>
<% } %>
</table>
</div>
user-list.ejs
<a href="/parks"> hello</a>
++the table code shown above
users.js
var express = require('express');
var router = express.Router();
var db = require('../database');
router.get('/user-list', function(req, res, next) {
db.query("SELECT Station_ID FROM Station WHERE Name = 'A'", function (err, results, fields) {
if (err) throw err;
res.render('user-list', { title: 'User List', userData: results});
});
});
router.get('/parks', function(req, res, next) { //this part not working
db.query("SELECT Station_ID FROM Station WHERE Name = 'A'", function (err, results, fields) {
if (err) throw err;
res.render('parks', { title: 'User Listt', userData: results});
});
});
module.exports = router;
值得注意的是app.js 文件,因为我必须在其中添加app.get("/parks" 行来链接两个页面,否则即使链接也不会重定向到parks.ejs
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const ejs = require('ejs');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.get("/parks", function(req,res){
res.render("parks");
});
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
【问题讨论】: