NodeJs et MySQL

krzysiu Messages postés 6 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 16 février 2014 - 8 févr. 2014 à 20:27
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 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

Si quelqu'un à une idée...

Merci a tous d'avance

3 réponses

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
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 :

http://fr.openclassrooms.com/informatique/cours/des-applications-ultra-rapides-avec-node-js

Peut-être te sera-t-il utile...

Ton console.log("totalPalettes = " + rows[0].nbPalettes); te renvoie bien des données ?

A+
0
krzysiu Messages postés 6 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 16 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

le problème est plus javascript que Node JS
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
11 févr. 2014 à 18:15
Bonjour,

Je ne code pas non plus avec node..

Déjà.. n'aurais tu pas oublié un point-virgule ?
totalPalettes= rows[0].nbPalettes


SInon :
mais sans avoir testé.. à tout hasard, cela pourrait-il corriger ton souci .?

** Gestion des palettes */
app.get('/GestionDesPalettes',[requireLogin],function(req, res, next){
  
  var sSQL = 'SELECT sum(NB_PALETTES) as nbPalettes FROM t_utilisateur_collecte';
  connection.connect;
  var TotalPalettes=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);
        return rows[0].nbPalettes;
      }
      else{
        console.log("Pas de palettes");  
      }  
    }
  });
  res.render("GestionDesPalettes", { "username": req.session.username, "totalPalettes": totalPalettes});
});

0
krzysiu Messages postés 6 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 16 février 2014
16 févr. 2014 à 17:22
Merci de ta réponse,

bien sur il manque un ;

j'avais déjà essayer ta solution, mais ça marche pas non plus.

pour le moment, j'ai détourné le problème pour faire une démo. mais le problème reviendra sur le tapis.

Merci encore pour vos suggestions
0
c'est un peu tard mais bon

c'est pas grave le ';', c'est du JS les ';' ne sont pas obligatoire sauf si les instructions sont sur la même ligne
0
kazari Messages postés 1 Date d'inscription dimanche 4 octobre 2015 Statut Membre Dernière intervention 4 octobre 2015
Modifié par kazari le 4/10/2015 à 00:39
c'est un peu tard mais bon,

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
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
5 oct. 2015 à 10:55
il ne te reste plus qu'a nous faire un tuto :)
0
Rejoignez-nous