Bonjour,
Je développe une application RESTful. J'avais développé la partie serveur en PHP mais j'ai découvert il y a peu de temps Node.js et son module restify et j'ai été comblé.
Néanmoins, sur la partie mysql, je bloque carrément :
J'ai une méthode qui permet d'identifier un user (c'est un test, merci de ne pas parler sécurité) :
Ce code teste l'existence du login passé dans la requête GET et vérifie que le mot de passe indiqué correspond à celui en base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 server.get('/login/:username/:password', function(req, res, next) { var statusCode = 1; var token = ''; var username = req.params.username; var password = req.params.password; db.read('account', {username:username}, ['username' 'password'], function(err, data) { if (md5(password) == data[0].password) { statusCode = 0; var date = new Date(); token = md5(date.getTime()+username+password); } else { statusCode = 2; } res.send({status: statusCode, token: token}); }); });
Je souhaite à la fin envoyer le statusCode ainsi qu'un token.
Le problème est que les variables déclarées en dehors du callback mysql ne sont pas connus (statusCode, token, username, password).
Pour info db.read c'est un raccourci pour le select :
J'ai encore un peu de mal avec ces callbacks à tout va. Quelqu'un aurait-il l'aimable obligeance de m'expliquer la bonne technique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function read(table, where, columns, callback) { var columnsClause = (columns ? columns.join(', ') : '*'); var q = 'SELECT ' + columnsClause + ' FROM ' + table; if (where) { var clause = hashToClause(where, ' AND '); q += ' WHERE ' + clause.clause; } client.query(q, (where ? clause.values : callback), callback); }
Merci
Partager