2012-12-06 2 views
0

이 문제에 대한 도움이 필요합니다.MySQL 쿼리에서 Node.js가 충돌 함

/* 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: Cannot read property 'name' of undefined
at Query.exports.login [as _callback] (../node-project01/routes/login.js:18:19)
at Query.Sequence.end (../node-project01/node_modules/mysql/lib/protocol/sequences/Sequence.js:66:24)
at Query._handleFinalResultPacket (../node-project01/node_modules/mysql/lib/protocol/sequences/Query.js:138:8)
at Query.EofPacket (../node-project01/node_modules/mysql/lib/protocol/sequences/Query.js:122:8)
at Protocol._parsePacket (../node-project01/node_modules/mysql/lib/protocol/Protocol.js:165:24)
at Parser.write (../node-project01/node_modules/mysql/lib/protocol/Parser.js:60:12)
at Protocol.write (../node-project01/node_modules/mysql/lib/protocol/Protocol.js:32:16)
at Socket.ondata (stream.js:38:26)
at Socket.EventEmitter.emit (events.js:96:17)
at TCP.onread (net.js:396:14)

이 문제를 해결하는 방법에 대한 아이디어를 얻을 : 사용자 이름이나 암호가 여기에, 데이터베이스의 코드가 아닌 경우 나 노드를 충돌 스크립트를 로그인 한?

+0

는 별도의 사이트에 코드와 오류를 넣지 마십시오 - 귀하의 질문에 넣어! –

답변

2

글쎄, 당신의 질문이 12 월에서 나온 것으로 생각하면, 나는 당신이 이미 문제를 해결했다고 상상한다. 그러나 쿼리에 결과가 없기 때문에 'rows [0]'이 정의되지 않았기 때문에 문제가 발생한 것 같습니다. 같은, 어떤 결과가 있는지 테스트해야합니다 항상 당신을 '행'변수를 사용하기 전에 :

if (rows.length > 0) { 
    // your code here 
} 

관련