第二个 ejs 文件没有选择数据 Nodejs
Second ejs file not picking data Nodejs
所以,基本上我是想link两个ejs文件来表达。第一个连接并显示结果,但在第一个上按下按钮后出现的第二个显示错误。
user-list
文件正确显示结果,但完全相同的 table 代码在 parks
中显示错误
parks.ejs
(当我点击重定向到这里的user-list
中的link时,它说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
文件,因为我必须在 link 两个页面中添加 app.get("/parks"
行,否则即使 link 也没有重定向到 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;
<a href="/parks"> hello</a>
此处,url 是相对于文档根目录的,因此这将触发您的 app.get("/parks")
路由处理程序 - 实际上它似乎没有提供 userData
变量。
如果您想从您的用户路由器触发 router.get('/parks')
处理程序,您应该使用相对于当前路径的 url。
<a href="parks"> hello</a>
或
<a href="/users/parks"> hello</a>
所以,基本上我是想link两个ejs文件来表达。第一个连接并显示结果,但在第一个上按下按钮后出现的第二个显示错误。
user-list
文件正确显示结果,但完全相同的 table 代码在 parks
parks.ejs
(当我点击重定向到这里的user-list
中的link时,它说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
文件,因为我必须在 link 两个页面中添加 app.get("/parks"
行,否则即使 link 也没有重定向到 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;
<a href="/parks"> hello</a>
此处,url 是相对于文档根目录的,因此这将触发您的 app.get("/parks")
路由处理程序 - 实际上它似乎没有提供 userData
变量。
如果您想从您的用户路由器触发 router.get('/parks')
处理程序,您应该使用相对于当前路径的 url。
<a href="parks"> hello</a>
或
<a href="/users/parks"> hello</a>