Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1116 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [Nodejs] Passage de variable avec async

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Nodejs] Passage de variable avec async

n°2299194
tompouss
Petit chat
Posté le 13-04-2017 à 11:59:55  profilanswer
 

Bonjour,
 
 
 
je bloque sur un probleme (je suis débutant Nodejs):
 
je bosse sur une app Nodejs + db Nosql mongodb qui se connecte à un webservice Json.
la structure des données reçues est la suivante:
             Pays
                |
           Agences
          /       |      
    Bien     Bien   Bien  
 
 
l'object pays contient des object agences( immobilières), et chaques object agences contiennent des biens immobiliers.
 
Mon problème est de récupérer l'ID (généré) de chaque object agence et de l'ajouter comme propriété à chaque biens de l'agence.
(Je dois donc normaliser ces données, avant de tout insérer en DB)
 
Javascript ne permet apparemment pas de le faire de façon simple (dans language plus "classique" ca ne poserait pas de probleme)
 
puisque l'ID devient undefined.
 
j'ai testé avec le module async en espérant qu'il resolve le probleme, mais il n'y a que waterfall qui puisse passer des variables/object entre les fonctions, or waterfall ne me semble pas adapté au traitement à effectuer.
 
 

Code :
  1. rest.get("https://monwebservice.com"
  2. .on("200",                function (data) {                    if (!data) {                        return callback();                    }
  3.                     // var data_from_ur = JSON.parse(data);                    //                    // console.log(data_from_ur);
  4.                     const agencies = data[1].agencies;
  5.                     async.each(agencies,
  6.                         function (agencyToFormat, callback) {
  7.                                                         let agencyFormatted = utils.ensureArray(agencyToFormat).map(function (serviceweboffice) {                                return converter.fromwebServiceOffice(serviceweboffice);                            })
  8.                             //l'ID généré à récupérer
  9.                             var agencyId= agencyFormatted.id;
  10.                             if(agencies.estates && agencies.estates.length>0)                            {                                let estateToFormat = agencies.estates;                                async.each(estatesToFormat,
  11.                                     function (estateToFormat, callback) {                                        let formatedEstate = utils.ensureArray(estateToFormat).map(function (servicewebEstate) {
  12.                                             return converter.fromwebServiceEstate(servicewebEstate);                                        });
  13.                                        
  14.                                         formatedEstate.officeId = agencyId;
  15.                                         console.log(formatedEstate.officeId); //null                                    }                                )
  16.                             }
  17.                            
  18.                         },
  19.                         function (err) {                            //                        }                    );                    // function convertAgencies(agencyToFormat, callback)                    // {                    //                    //                    //                    //     let agencyFormatted = utils.ensureArray(agencyToFormat).map(function(serviceweboffice)                    //     {                    //         return converter.fromwebServiceOffice(serviceweboffice);                    //     });                    //                    //                    //                    //                    //     callback(null, agencyFormatted);                    // }
  20.                     function getOfficeId(office, callback) {                        let new_officeid = Office.id;
  21.                         callback(null, new_officeid)                    }
  22.                 });


Apparemment la fonction bind pourrait être une solution, mais je ne vois pas trop comment l'utliliser
 
Merci pour votre aide
 
 
Tom


Message édité par tompouss le 13-04-2017 à 14:10:57

---------------
collectionneur de pâtes thermiques
mood
Publicité
Posté le 13-04-2017 à 11:59:55  profilanswer
 

n°2299196
torwood3
Posté le 13-04-2017 à 13:31:19  profilanswer
 

Bonjour,
 
Je te laisse éditer ton post avec la bonne balise avant de t'aider :)  
Le code est illisible.
 
Et je rajoute des questions:  
L'id généré des agences, tu le fais avec ca ?

Code :
  1. converter.fromwebServiceOffice(serviceweboffice);


 
Si oui, pourquoi ne pas enchainer une fois que tu as l'id généré avec une fonction qui parcours les biens d'une agence et lui associe l'id ? (Donc directement dans ton .map();)
 
Ton système me semble super compliqué pour pas grand chose ...
 
Tor


Message édité par torwood3 le 13-04-2017 à 13:37:58

---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
n°2299893
tompouss
Petit chat
Posté le 27-04-2017 à 12:51:32  profilanswer
 

Bonjour,
 
j'ai résolu mon probleme en mettant ma variable dans un object(javais oublié qu'en javasript le passage de variable ne pouvait se faire qu'avec des object (me demande bien pq d'ailleurs)
 
 
par contre maintenant, je cherche à débugger mon app via la commande
 
 
 
node --debug test-mail_code.js
 
il me dit: debugger listening on [:]:5858
 
 
mais impossible d'atteindre cette adresse:
j'ai essayé plein de truc dont : http://[:]:8080/debug?port=5858
 
mais ca ne fontionne pas.
 
J'imagine que Chrome est capable d'uitliser une ipv6 comme URL ou faut-il utiliser une ipv4?


---------------
collectionneur de pâtes thermiques

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [Nodejs] Passage de variable avec async

 

Sujets relatifs
[NODEJS] annuler 2meme requete sur un get[PERL/MySQL] Utilisation d'une variable dans la clause Where
Matplotlib variable -> fonctionPOST ne semble pas fonctionné pour une seul variable
recupérer une chaine de texte d'un variable FORfaire une somme avec nom d'onglet et ligne variable en VBA
Passage d'une matrice (1, j) à une matrice (i', j')Select avec variable contenant plusieurs valeurs
Récupérer une partie du nom de fichier en variable ?Stocker puis puis comparer le NOM d'une variable
Plus de sujets relatifs à : [Nodejs] Passage de variable avec async


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR