krzysiu
Messages postés6Date d'inscriptionvendredi 5 juin 2009StatutMembreDernière intervention16 février 2014
-
8 févr. 2014 à 20:27
@karamel
Messages postés1855Date d'inscriptionvendredi 9 mai 2008StatutModérateurDernière intervention18 avril 2024
-
5 oct. 2015 à 10:55
Bonjour à tous,
je m'essaye à node js et MySql. je connaissais javascript, mais là je découvre une nouvelle syntaxe et des concepts qui me sont encore flou...
Voici ma question
/** Gestion des palettes */
app.get('/GestionDesPalettes',[requireLogin],function(req, res, next){
var TotalPalettes;
var sSQL = 'SELECT sum(NB_PALETTES) as nbPalettes FROM t_utilisateur_collecte';
connection.connect;
connection.query(sSQL, function(err,rows,fields){
if (err != null){
res.end('Query error n° :' + err)
}
else{
if (rows.length>0){
console.log("totalPalettes = " + rows[0].nbPalettes);
totalPalettes= rows[0].nbPalettes
}
else{
console.log("Pas de palettes");
}
}
});
res.render("GestionDesPalettes", { "username": req.session.username, "totalPalettes": totalPalettes});
});
Ma question et donc la suivante, comment faire pour récupérer le contenu de la variable totalPalettes
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 9 févr. 2014 à 23:30
Hello,
Désolé krzysiu, ma réponse n'est certainement pas celle à laquelle tu t'attendais, mais bon...
Je ne connaîs pas node js (c'est donc mal parti :)), par contre ça m'a donné envie d'y jeter un oeil (merci à toi quoi ;)), et de ce fait j'ai trouvé ce tuto :
Ton console.log("totalPalettes = " + rows[0].nbPalettes); te renvoie bien des données ?
A+
krzysiu
Messages postés6Date d'inscriptionvendredi 5 juin 2009StatutMembreDernière intervention16 février 2014 11 févr. 2014 à 18:05
Merci de t'intéresser à mon problème.
Le line que tu donnes m'as effectivement permis d'aborder nodejs.
console.log("totalPalettes = " + rows[0].nbPalettes);, me renvoie le resultat d'un calcul fais dans le requête. Cela fonctionne parfaitement.
ce résultat , je le met ensuite dans une variable (totalPalettes= rows[0].nbPalettes).
mon problème, c'est que cette variable perd son contenu si je la consulte en dehors de : connection.query(sSQL, function(err,rows,fields){ ...}
malgré une déclaration en globale. ?!? c'est là que j'ai du loupe un truc
il faut pas oublier que c'est du JS c'est de l'asynchrone. il faut pas penser comme pour PHP ou autre
1- dans la ligne 6, connection.query retourne un objet query pas une valeur
c.a.d, que même avec un return il est pas possible de récupérer la valeur voulu
il faut connaître le type de retour des fonctions pour bien ecrire du code et avoir le bon résultat :D
2- j'explique un peu
si on fait ca
var func = function () {
var TotalPalettes;
connection.connect;
var sSQL = 'SELECT sum(NB_PALETTES) as nbPalettes FROM t_utilisateur_collecte';
connection.query(sSQL, function(err,rows,fields){
if (err != null){
res.end('Query error n° :' + err)
} else{
if (rows.length>0){
TotalPalettes = rows[0].nbPalettes;
} else{
console.log("Pas de palettes");
}
}
});
console.log("TotalPalettes = " + TotalPalettes)
}
func()
on peut pas savoir quand TotalPalettes sera remplie car
console.log("TotalPalettes = " + TotalPalettes)
n'attendra pas la fin de l'exécution de l'instruction précédente (c'est de l'asynchrone)
c.a.d elle affichera "TotalPalettes ="
mais si on fait ca
var func = function (callback) {
connection.connect;
var sSQL = 'SELECT sum(NB_PALETTES) as nbPalettes FROM t_utilisateur_collecte';
connection.query(sSQL, function(err,rows,fields){
if (err != null){
res.end('Query error n° :' + err)
} else{
if (rows.length>0){
callback(rows[0].nbPalettes);
} else{
console.log("Pas de palettes");
}
}
});
}
func(function(TotalPalettes){
console.log("TotalPalettes = " + TotalPalettes)
})
la c'est bon
j'espère que c'est un peu plus clair
@karamel
Messages postés1855Date d'inscriptionvendredi 9 mai 2008StatutModérateurDernière intervention18 avril 2024153 5 oct. 2015 à 10:55
11 févr. 2014 à 18:05
Le line que tu donnes m'as effectivement permis d'aborder nodejs.
console.log("totalPalettes = " + rows[0].nbPalettes);, me renvoie le resultat d'un calcul fais dans le requête. Cela fonctionne parfaitement.
ce résultat , je le met ensuite dans une variable (totalPalettes= rows[0].nbPalettes).
mon problème, c'est que cette variable perd son contenu si je la consulte en dehors de : connection.query(sSQL, function(err,rows,fields){ ...}
malgré une déclaration en globale. ?!? c'est là que j'ai du loupe un truc
le problème est plus javascript que Node JS