【问题标题】:Page Redirecting issues Node-js页面重定向问题 Node-js
【发布时间】:2021-03-18 20:20:20
【问题描述】:

我试图在单击 show.js 页面上的提交按钮时打开 places.ejs 文件,就像在单击 new.ejs 文件上的提交按钮时打开 show.ejs 页面一样,但是发生了引用错误。请帮我修复错误。我附上我的 routes.js 代码和我的 index.js 代码的一部分 任何帮助都将是非常可观的。 谢谢

routes.js

const {
   con,
   sessionStore
 } = require('./config/db');
exports.new = function(req, res){
    message = '';
   if(req.method == "POST"){
      const post  = req.body;
      const username= post.username;
      const title= post.title;
      const state= post.state;
      const category= post.category;
      const description= post.description;
 
      if (!req.files)
                return res.status(400).send('No files were uploaded.');
 
      const file = req.files.uploaded_image;
      var img_name=file.name;
 
         if(file.mimetype == "image/jpeg" ||file.mimetype == "image/png"||file.mimetype == "image/gif" ){
                                 
              file.mv('public/imgs/uploads/'+file.name, function(err) {
                             
               var sql = "INSERT INTO `nt_data`(`username`,`title`,`state`,`category`, `images` ,`description`) VALUES (?,?,?,?,?,?)";
               var query = con.query(sql, [username, title, state, category, img_name, description], function(err) {
                  console.log(err)
                 if (!err) {
                   res.redirect('show/' + category);
                 }
                 else {
                  message = "This format is not allowed , please upload file with '.png','.gif','.jpg'";
                  res.render('new.ejs',{message: message});
                }
               }); 
            }); 
          
   } 
}
   else {
      res.render('new');
   }
 
};
exports.show = function(req, res){
    let message = '';
  
   var category = req.params.category;
    const sql="SELECT * FROM `nt_data` WHERE `category`='"+category+"'"; 
    con.query(sql, function(err, result){
      console.log(err)
     if(result.length <= 0){
     
      message = "show not found!";
      
      res.render('show.ejs',{data:result, message: message});
     }
     else{
      res.redirect('places/'+ username);
    }
   });
};
exports.places = function(req, res){
    let message = '';
  
   var username = req.params.username;
   const sql="SELECT * FROM `nt_data` WHERE `username`='"+username+"'"; 
    con.query(sql, function(err, result){
      
     if(result.length <= 0)
     
      message = "places not found!";
      
      res.render('places.ejs',{data:result, message: message});
   });
};

index.js 代码的一部分

app.get('/new', loginRequired, routes.new);//call for main index page
app.post('/', loginRequired, routes.new);//call for signup post 


app.get('/show/:category', loginRequired, routes.show);
app.post('/', loginRequired, routes.show);
app.get('/places/:username', loginRequired, routes.show);

错误

ReferenceError: username is not defined
    at Query.<anonymous> (C:\Users\hp\Desktop\Internship\Nt\routes.js:62:31)

【问题讨论】:

    标签: mysql node.js express ejs


    【解决方案1】:

    请问变量username持有的值是什么。我可以看到你没有给它赋值。

    • 创建一个变量用户名并将从数据库中获取的用户名分配给它。

    但是,我改变了重定向路径。

    exports.show = function(req, res){
        let message = '';
      
       var category = req.params.category;
        const sql="SELECT * FROM `nt_data` WHERE `category`='"+category+"'"; 
        con.query(sql, function(err, result){
          console.log(err)
         if(result.length <= 0){
         
          message = "show not found!";
          
          res.render('show.ejs',{data:result, message: message});
         }
         else{
          // Take a look;
          const username = #sql.username or anyhow you point to a field 
          res.redirect('/places/'+ username);
        }
       });
    };
    
    Try that
    

    【讨论】:

    • 实际上 new.ejs 文件是表单,因此表单的用户名部分中的任何用户文件都将被视为它的值。
    【解决方案2】:

    我认为问题在于:您在exports.new 中定义了用户名。但是在加载exports.places 时,用户名将是未定义的。所以我的建议是:通过他的用户名来显示这样的, /show/:username/:category 从 export.new 调用该路由,如下所示: res.redirect('show/' + username + '/' + category) 然后从exports.show调用地方 res.redirect('places/'+ req.params.username);

    如果有帮助请告诉我!

    【讨论】:

    • 它显示数据和用户名的引用错误,如下所示:用户名未定义和数据未定义
    • 您可以添加更多调试并发布结果吗?例如console.log(req)console.log(req.body)。错误发生在 var username = req.params.username; 函数的地方,对吗?能不能在控制台打印res.redirect('places/'+ username); 之前的用户名,贴在这里?
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多