【问题标题】:ReferenceError: students is not definedReferenceError:未定义学生
【发布时间】:2022-01-19 22:55:46
【问题描述】:

你好,我是 nodejs 的新手,并试图在出勤索引处获取学生数据,但它说:学生未定义这是文件夹结构 https://ibb.co/d5Q0GwR

错误:

   ReferenceError: D:\nodejs\node_project\views\attendance\index.ejs:17
   15|         </thead>
   16|         <tbody>
>> 17|             <% students.forEach(function (student) { %>
   18|             <tr>
   19|                 <td>Tiger Nixon</td>
   20|                 <td><%= student.student_name %></td>

  students is not defined 

控制器:

  const express = require('express');
  var router = express.Router();
  const mongoose = require('mongoose');
  const Attendance = mongoose.model('Attendance');

  router.get('/', (req, res) => res.render('attendance/index'));

  router.get('/student', (req, res) => { 
Student.find((err, docs) => { 
    if (!err) { res.render("student", {
                   students: docs
               });
     } else { 
        console.log('Error in retrieving students record :' + err);
         } 
     }); 
  });

  module.exports = router;

学生管理员:

   paste.ofcode.org/HkXdi3vxZaYPGd4Rx9mLKg

【问题讨论】:

  • 学生是你的模特?
  • index.ejs 没有students。你在 student.ejs 中渲染 students 变量
  • 我渲染好了,你可以看到
  • @ForamTrada 是的,我有一个模特学生
  • 提供students对象。

标签: javascript node.js express node-modules


【解决方案1】:

当您访问router.get('/student' 时,您将studentsres.render("student", { students: docs }) 一起传递到EJS。

当您访问router.get('/' 时,您只需说res.render('attendance/index')) 并且不要向其中传递任何内容,更不用说定义学生的对象了。

你需要在那里做你在/student做的事情。

【讨论】:

  • 现在它在另一行显示错误:ReferenceError: D:\nodejs\node_project\views\attendance\index.ejs:17 15| 16| >> 17| 18| 19| 20|
【解决方案2】:

在第 9 行中,Student 被称为模型,但是当您导入 express 和其他模型时,在第 4 行中,您导入了 Attendance。

您应该导入 School 模型并再次运行代码。

const Student = mongoose.model('Student');

【讨论】:

    猜你喜欢
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多