Avoir un tableau d'objets [obj1, obj2]
Je souhaite utiliser la fonction Map pour créer une requête de base de données (qui utilise des promesses) et associer les résultats de la requête à chaque objet.
[obj1, obj2].map(function(obj){
db.query('obj1.id').then(function(results){
obj1.rows = results
return obj1
})
})
Bien sûr, cela ne fonctionne pas et le tableau de sortie est [indéfini, indéfini]
Quelle est la meilleure façon de résoudre un problème comme celui-ci? Cela ne me dérange pas d'utiliser d'autres bibliothèques comme async
Mappez votre tableau sur les promesses et vous pourrez alors utiliser la fonction Promise.all () :
var promises = [obj1, obj2].map(function(obj){
return db.query('obj1.id').then(function(results){
obj1.rows = results
return obj1
})
})
Promise.all(promises).then(function(results) {
console.log(results)
})
Vous ne retournez pas vos promesses dans la fonction map
.
[obj1, obj2].map(function(obj){
return db.query('obj1.id').then(function(results){
obj1.rows = results
return obj1
})
})