第二个 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>