嗨,我试图使用 ejs 作为视图引擎从数据库 (MongoDB( 获取数据,但它显示错误:
ReferenceError: D:odejs\crud\views\employee\list.ejs:21,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
list.ejs:
<tbody>
<% employees.forEach(function (employees) { %>
<tr>
<td><%= employees.fullname %></td>
<td><%= employees.email %></td>
<td><%= employees.mobile %></td>
<td><%= employees.city %></td>
<td>
<a href="/show" class="btn btn-outline-info my-2 my-sm-0">Show</a>
<a href="/edit" class="btn btn-outline-warning my-2 my-sm-0">Edit</a>
<a href="" class="btn btn-outline-danger my-2 my-sm-0">Delete</a>
</td>
</tr>
<% }) %>
完整的错误代码:
ReferenceError: D:nodejscrudviewsemployeelist.ejs:21
19| </thead>
20| <tbody>
>> 21| <% employees.forEach(function (employees) { %>
22| <tr>
23| <td><%= employees.fullname %></td>
24| <td><%= employees.email %></td>
employees is not defined
at eval (eval at compile
(D:nodejscrudnode_modulesejslibejs.js:633:12), <anonymous>:11:8)
at returnedFn (D:nodejscrudnode_modulesejslibejs.js:668:17)
at tryHandleCache (D:nodejscrudnode_modulesejslibejs.js:254:36)
at View.exports.renderFile [as engine]
(D:nodejscrudnode_modulesejslibejs.js:485:10)
at View.render (D:nodejscrudnode_modulesexpresslibview.js:135:8)
at tryRender
(D:nodejscrudnode_modulesexpresslibapplication.js:640:10)
at Function.render
(D:nodejscrudnode_modulesexpresslibapplication.js:592:3)
at ServerResponse.render
(D:nodejscrudnode_modulesexpresslibresponse.js:1012:7)
at ServerResponse.res.render (D:nodejscrudnode_modulesexpress-ejs-
layoutslibexpress-layouts.js:77:18)
at Employee.find (D:nodejscrudcontrollersemployeeController.js:32:8)
at D:nodejscrudnode_modulesmongooselibmodel.js:4581:16
at D:nodejscrudnode_modulesmongooselibquery.js:4315:12
at process.nextTick
(D:nodejscrudnode_modulesmongooselibhelpersquerycompleteMany.js:35:39)
at process._tickCallback (internal/process/next_tick.js:61:11)
服务器.js:
require('./models/db');
require('./models/employee.model');
const express = require('express');
const mongoose = require('mongoose');
const expressLayouts = require('express-ejs-layouts');
const bodyParser = require('body-parser');
const path = require('path');
const employeeController = require('./controllers/employeeController');
var app = express();
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
//EJS
app.use(expressLayouts);
app.set('view engine','ejs');
app.listen(3000, () => {
console.log('Express server started at port : 3000');
});
app.use('/employee', employeeController);
员工控制器.js:
const express = require('express');
var router = express.Router();
const mongoose = require('mongoose');
const Employee = mongoose.model('Employee');
router.get('/',(req, res) => {
res.render("employee/addOrEdit");
});
router.post('/',(req, res) => {
insertRecord(req, res);
});
function insertRecord(req, res) {
var employee = new Employee();
employee.fullName = req.body.fullname;
employee.email = req.body.email;
employee.mobile = req.body.mobile;
employee.city = req.body.city;
employee.save((err, doc) => {
if (!err)
res.redirect('employee/list');
else {
console.log('Error during record insertions : ' + err);
}
});
}
router.get('/list', (req, res) => {
Employee.find((err, docs) => {
if (!err) {
res.render("employee/list", {
list: docs
});
} else {
console.log('Error in retrieving employee list :' + err);
}
});
});
module.exports = router;
你能分享它的节点js服务器端代码吗,从哪里发送res.render("list");
.检查您是否从服务器端发送employees
会更有帮助。
此外,请确保将employees
信息发送到如下所示的视图,
res.render("list", {employees: employeeData});
一些会产生问题的场景:- 1.您正在从服务器传递另一个值。如果是这样,那么您需要更改该res.render("list", {employees: employeeData});
2.您需要检查.ejs页面中的数组值是否不为空if (employeeData) {
<% if (employeeData) { %>
<tbody>
<% employees.forEach(function (employees) { %>
<tr>
<td><%= employees.fullname %></td>
<td><%= employees.email %></td>
<td><%= employees.mobile %></td>
<td><%= employees.city %></td>
<td>
<a href="/show" class="btn btn-outline-info my-2 my-sm-0">Show</a>
<a href="/edit" class="btn btn-outline-warning my-2 my-sm-0">Edit</a>
<a href="" class="btn btn-outline-danger my-2 my-sm-0">Delete</a>
</td>
</tr>
<% }) %>
<% } %>
注意:- 由于我不知道我从场景中给出解决方案的代码。