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 :
- rest.get("https://monwebservice.com"
- .on("200", function (data) { if (!data) { return callback(); }
- // var data_from_ur = JSON.parse(data); // // console.log(data_from_ur);
- const agencies = data[1].agencies;
- async.each(agencies,
- function (agencyToFormat, callback) {
- let agencyFormatted = utils.ensureArray(agencyToFormat).map(function (serviceweboffice) { return converter.fromwebServiceOffice(serviceweboffice); })
- //l'ID généré à récupérer
- var agencyId= agencyFormatted.id;
- if(agencies.estates && agencies.estates.length>0) { let estateToFormat = agencies.estates; async.each(estatesToFormat,
- function (estateToFormat, callback) { let formatedEstate = utils.ensureArray(estateToFormat).map(function (servicewebEstate) {
- return converter.fromwebServiceEstate(servicewebEstate); });
-
- formatedEstate.officeId = agencyId;
- console.log(formatedEstate.officeId); //null } )
- }
-
- },
- function (err) { // } ); // function convertAgencies(agencyToFormat, callback) // { // // // // let agencyFormatted = utils.ensureArray(agencyToFormat).map(function(serviceweboffice) // { // return converter.fromwebServiceOffice(serviceweboffice); // }); // // // // // callback(null, agencyFormatted); // }
- function getOfficeId(office, callback) { let new_officeid = Office.id;
- callback(null, new_officeid) }
- });
|
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