在Node.js Webapp中使用Express时,Res.redirect不是函数

时间:2020-06-24 17:01:46

标签: javascript node.js express

如果所需数据成功更新,我试图重定向到'/ admin'路由,但是我收到res.redirect不是函数的错误。我也尝试编写return res.redirect,但它也不起作用。节点专家,请帮忙。在这里,我只是在登记号上找到学生记录。基础并更新带有标记的记录,然后重定向到管理页面。

app.post('/admin/midterm/marks',(req,res)=>{
    var m_written=[];
    var m_practical=[];
    
    var myjson=JSON.stringify(req.body);
    course.subjects.map(sub=>{
        if(!Array.isArray(req.body[`${sub}`]))
        {
            var p={subject:sub,mark:req.body[`${sub}`]}
            m_written.push(p);
        }
        else{
            var p={subject:sub,mark:req.body[`${sub}`][0]};
            var q={subject:sub,mark:req.body[`${sub}`][1]};
            m_written.push(p);
            m_practical.push(q);
        }
        
    });

    var first={
        sem:course._id,
        marks_sem:[{
            term:ms,
            m_written:m_written,
            m_practical:m_practical
        }]
    }
    if(!StudentRecord.total.length )
    {
        Student.updateOne({_id:check_Id},{total:first},function(err,res){
            if(err)
                {console.log("error");}
            res.redirect('/admin');
        });
    }

    else{
        var flag=0;
        StudentRecord.total.map(record=>{
            if(record.sem==required_sem)
            {
                flag=1;
                record.marks_sem.push(first.marks_sem);
                Student.updateOne({_id:check_Id},{total:StudentRecord.total},function(err,res){
                if(err)
                    {console.log("error");}
                 res.redirect('/admin');
                });

            }

        });
        if(flag==0)
        {
            StudentRecord.total.push(first);
            Student.updateOne({_id:check_Id},{total:StudentRecord.total},function(err,res){
                if(err)
                    {console.log("error");}
                     res.redirect('/admin');

            });
        }
    }});

1 个答案:

答案 0 :(得分:2)

您在回调中覆盖res。在回调result中命名第二个参数,一切正常。

app.post("/admin/midterm/marks", (req, res) => {
  var m_written = [];
  var m_practical = [];

  var myjson = JSON.stringify(req.body);
  course.subjects.map((sub) => {
    if (!Array.isArray(req.body[`${sub}`])) {
      var p = { subject: sub, mark: req.body[`${sub}`] };
      m_written.push(p);
    } else {
      var p = { subject: sub, mark: req.body[`${sub}`][0] };
      var q = { subject: sub, mark: req.body[`${sub}`][1] };
      m_written.push(p);
      m_practical.push(q);
    }
  });

  var first = {
    sem: course._id,
    marks_sem: [
      {
        term: ms,
        m_written: m_written,
        m_practical: m_practical,
      },
    ],
  };
  if (!StudentRecord.total.length) {
    Student.updateOne({ _id: check_Id }, { total: first }, function (err, result) {
      if (err) {
        console.log("error");
      }
      res.redirect("/admin");
    });
  } else {
    var flag = 0;
    StudentRecord.total.map((record) => {
      if (record.sem == required_sem) {
        flag = 1;
        record.marks_sem.push(first.marks_sem);
        Student.updateOne(
          { _id: check_Id },
          { total: StudentRecord.total },
          function (err, result) {
            if (err) {
              console.log("error");
            }
            res.redirect("/admin");
          }
        );
      }
    });
    if (flag == 0) {
      StudentRecord.total.push(first);
      Student.updateOne(
        { _id: check_Id },
        { total: StudentRecord.total },
        function (err, result) {
          if (err) {
            console.log("error");
          }
          res.redirect("/admin");
        }
      );
    }
  }
});