IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Return "undefined" sur fonction


Sujet :

NodeJS

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut Return "undefined" sur fonction
    Bonjour à tous,

    je ne comprend pas ce qui se passe, javascript est une peu obscur pour moi parfois ...

    voici le code que j'ai écrit :

    le code appelant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    app.get("/cloture",[requireLogin],function(req,res,next){
      console.log('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'); 
      console.log('>>>> ' +TableauRecapitulatif(connection));
      console.log('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
    });
    Le code appelé qui se trouve dans un autre fichier .js

    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
    function TableauRecapitulatif(connection){
       connection.query(QVSociete(),function(err,result){
       var Tableau='';
       for (var i=0;i<result.length;i++){
        Tableau+='<tr>';
        Tableau+='<td>'+result[i].SOCIETE+'</td><td>'+result[i].ADRESSE+' '+result[i].CODE_POSTAL+' '+result[i].VILLE+'</td>     <td>'+result[i].NB_PALETTES_1+'</td><td>'+result[i].NB_PALETTES_2+'</td><td>' +result[i].NB_PALETTES_3+'</td>';
        Tableau+='</tr>';
       };
       console.log('----------------------------------------------');
       console.log (Tableau); 
       console.log('----------------------------------------------');
     
      return Tableau;
     });
    };
    et dans la partie appelante, je devrai récupérer le contenu de la variable Tableau (logiquement non ).
    Mais je récupère : >>>> undefined

    est-ce que quelqu'un peut éclairer ma lanterne ?

    Merci beaucoup
    et très bon WE

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    Salut !
    Y’a rien d’obscure … tu dois juste revoir tes bases en JavaScript notamment sur la portée des variables !
    En gros tu déclares Tableau dans un scope et tu tante de le retourner dans un autre scope.

    Ensuite Node.js est environnement asynchrone donc les return sont fortement déconseillé, le résultat d’une fonction asynchrone est assuré par une fonction callback respectant la signature suivante function(err,result) { …} tous comme ta callback passé à ta requete BDD

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    Ok, bon je revoie ma copie.

    je sais bien node js est asynchrone, je m'en suis souvenu avec ce programme mais je ne comprenais pas pourquoi il ne me retournai rien.

    je recommence et vous dis quoi

    Merci encore pour ton aide
    Christophe

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/03/2011, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo