2015-10-06 51 views
0

当我键入表中的“有趣”的用户名时,我没有面临任何错误,但是当我输入错误的名称,这是不是在表中的名称是面临错误this is the error和代码附在下面。TypeError:无法读取未定义的属性'名称'

app.post('/Fu',function(req,res,next){ 

     var username = req.body.uname; 
     var password = req.body.pwd; 


     con.query('SELECT name FROM fun WHERE name = "' + username +'" ',function(err, result,fields) { 


      var w = result[0].name; 

      if(username == w){ 
     console.log("login successful"); 

     } 
     else{ 
       console.log("login not successful");  
        } 
    } 

}); 

      res.send("success1"); 
      }); 

有人可以帮助错误。

回答

0

你的问题是在这里:

var w = result[0].name;

因为结果设置为[0]不存在(查询无功而返)。您正尝试从undefined的某个值获取name的值。

做这样的事情:

var w 
if (result[0]) { 
    w = result[0].name 
} else { 
    //your logic to handle this scenario 
} 

这假定任何DB查询库使用,即使空将返回一个数组。如果返回undefined,而不是一个空数组,你的if声明将需要看起来更像:if (result && result[0])

+0

谢谢你这是工作:) –

1

这个错误可能是相关的事实是,当用户名不存在于表,result将被设置为和空阵列[]。这意味着它根本没有元素,所以result[0]undefined

请确保在试图获得result[0].name之前检查。

另外,我建议你几件事情:

1)添加错误别的之前检查;

2)您不需要检查名称是否等于结果。您所写的查询只会返回已符合该要求的条目;

3)在回调函数内部发送回应,否则,用户在查询执行完毕之前会得到“success1”的回答。

这里如下结果代码:

app.post('/Fu',function(req, res, next){ 
    var username = req.body.uname; 
    var password = req.body.pwd; 

    con.query('SELECT name FROM fun WHERE name = "' + username +'"', function(err, result,fields) { 
     if (err) { 
      response.sendStatus(500); 
      return; 
     } 

     if (result.lenght > 0) { 
      res.send('Login was successful'); 
     } else { 
      res.send('Login was not successful'); 
     } 
    }); 
}); 
+0

非常感谢它实际上是工作,我知道怎么我得到错误,但无法将其整理出来,再次谢谢:) –

相关问题