我需要帮助来解决我遇到的这个问题。如果用户名或密码不在数据库中,我有会崩溃节点的登录脚本,这里是代码:
/* Login */
exports.login = function(req, res){
var post = req.body;
var mysql = require('mysql');
var db = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'node01',
});
var selectStmt = 'SELECT * FROM users WHERE name = "' + post.user +'"';
db.connect();
db.query(selectStmt, function(err, rows, fields) {
if(err) throw err;
else if(rows[0].name == post.user && rows[0].password == post.password){
req.session.auth_id = rows[0].id;
req.session.user = rows[0].name;
res.redirect('/adminindex');
}
else res.redirect('/admin');
});
db.end();
};
和我得到的错误
TypeError:无法读取Query. exports.login[as_callback](…/node-project ect01/路由/login.js:18:19)未定义的属性'name'
在Query.Sequence.end(…/node-project ect01/node_modules/mysql/lib/协议/序列/序列.js:66:24)
在Query._handleFinalResultPacket(…/node-project ect01/node_modules/mysql/lib/协议/序列/Query.js:138:8)
在Query.EofPack(…/node-project ect01/node_modules/mysql/lib/协议/序列/Query.js:122:8)
在Protocol._parsePacket(…/node-project ect01/node_modules/mysql/lib/协议/协议.js:165:24)
在Parser.write(…/node-project ect01/node_modules/mysql/Socket. EventEmitter.emit(event.js:96:17)
在TCP.onread(net.js:396:14)
关于如何解决这个问题有什么想法吗?
好吧,考虑到你的问题是从12月开始的,我想你已经解决了这个问题。然而,你的问题可能是因为你的查询没有结果,那么'row[0]'是未定义的。在使用'rows'变量之前,你总是应该测试是否有任何结果,比如:
if (rows.length > 0) {
// your code here
}
问候,