Utiliser les paramètres de la requête GET dans un callback mysql
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é) :
Code:
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});
});
}); |
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.
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 :
Code:
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);
} |
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 ?
Merci