Comment retourner une valeur à partir d'une requête mysql node.js
Je suis encore très nouveau pour Node.js et j'essaie de comprendre comment les rappels de travail.
Donc, voici mon problème :
J'aurais dû mettre plus de code :
POST :
app.post('/register', function(req, res) {
//get data from the request
var data = {
username: req.body.username,
email: req.body.email,
password: req.body.password
};
function fetchID(callback) {
connection.query('SELECT id_user FROM USERS WHERE username = ?', data.username, function(err, rows) {
if (err) {
callback(err, null);
} else
callback(null, rows[0].id_user);
});
}
var user_id;
fetchID(function(err, content) {
if (err) {
console.log(err);
return next("Mysql error, check your query");
} else {
user_id = content;
console.log(user_id); //undefined
}
});
console.log(user_id); //undefined
var payload = {
iss: req.hostname,
sub: user_id
}
console.log(payload.sub); //correct id
})
OBTENIR :
app.get('/todos', function(req, res) {
if (!req.headers.authorization) {
return res.status(401).send({
message: 'You are not authorized !'
});
}
var token = req.headers.authorization.split(' ')[1];
var payload = jwt.decode(token, "shhh..");
//additional level of security
console.log('sub id is : ' + payload.sub); //undefined
if (!payload.sub) {
return res.status(401).send({
message: 'Authentication failed !'
});
}
})
J'ai commenté chaque console.journal d'être plus clair. J'ai besoin d'obtenir l'id correct quand je vérifie pour if (!payload.sub)
dans l'app.get()
Est le
pour votre première fonction,
user_id
variable undefined
si vous console.log(user_id)
droite après la mise en else
déclaration ou lorsque vous l'utilisez pour définir payload.sub
?pour votre première fonction,
function fetchID(callback)
où est data
objet est passé?
OriginalL'auteur redAce | 2015-02-21
Vous devez vous connecter pour publier un commentaire.
Vos deux fonctions doit être quelque chose comme -
et puis
Ici dans la fonction de rappel, le retour de l'variable
content
contiendra la valeur deuser_id
.MODIFIER
Je n'ai pas résolu le problème exact, comme vous l'aviez décrit ci-dessus.
Mais dans l'exemple suivant, j'ai montré que, le mécanisme de rappel est de travailler
Première (la création de la Table et insérer des données factices)-
Maintenant, j'ai fait votre méthode post par get et testé dans le navigateur.
Suivant est le plein de classe testé dans mon localhost -
Maintenant ces demandes de produire cette sortie -
http://127.0.0.1:1212/getuser?username=john
=>user id is -1
ethttp://127.0.0.1:1212/getuser?username=sham
=>user id is -2
Espère que cet exemple de code va vous aider à comprendre le rappel dans node.js.
Grâce
OriginalL'auteur Piyas De