当我输入Table" fun"中的用户名时我没有遇到任何错误,但是当我输入错误的名称时,表格中没有的名称面临错误this is the error并且代码附在下面。
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 :(得分: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');
}
});
});
答案 1 :(得分:0)
你的问题在这里:
var w = result[0].name;
因为[0]的结果集不存在(查询没有返回)。您试图从name
。
undefined
值
做这样的事情:
var w
if (result[0]) {
w = result[0].name
} else {
//your logic to handle this scenario
}
这假设您使用的任何db查询库都将返回一个数组,即使是空的。如果它返回undefined
而不是空数组,则您的if
语句需要看起来更像:if (result && result[0])