オブジェクトの配列を持つ[obj1、obj2]
Map関数を使用して、それらすべてに関するDBクエリ(promiseを使用)を作成し、クエリの結果を各オブジェクトに添付します。
[obj1, obj2].map(function(obj){
db.query('obj1.id').then(function(results){
obj1.rows = results
return obj1
})
})
もちろんこれは機能せず、出力配列は[undefined、undefined]です
このような問題を解決する最良の方法は何ですか?非同期のような他のライブラリを使用しても構いません
配列をプロミスにマッピングすると、 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)
})
map
関数内でPromiseを返していません。
[obj1, obj2].map(function(obj){
return db.query('obj1.id').then(function(results){
obj1.rows = results
return obj1
})
})