2012-12-06 5 views
0

J'ai besoin d'aide pour ce problème. J'ai un script de login qui bloque le noeud si le nom d'utilisateur ou mot de passe ne sont pas dans la base de données, voici le code:Node.js se bloque sur la requête MySQL

/* 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(); 
}; 

et l'erreur que je reçois

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)

Toutes les idées sur la façon de résoudre ce problème?

+0

Ne pas mettre le code et l'erreur sur un site distinct - les mettre dans votre question! –

Répondre

2

Eh bien, étant donné que votre question est de Décembre, j'imagine que vous avez déjà résolu le problème. Cependant, votre problème est probablement dû au fait que votre requête n'a aucun résultat, alors 'rows [0]' est indéfini. avant d'utiliser la variable « lignes », vous devriez toujours vérifier s'il y a un résultat, comme:

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

salutations

Questions connexes