0
私の下のコードは、私の写真find()
約束が完了する前に、非同期の次のコールバックを起動しています。 async.forEach
は、next
が呼び出されるまで発生しませんでした。async forEach次のメソッドは待機しません
私は自分の写真[0]がカテゴリ:item.strIdが渡されるのと同じ順番で出てくるようにしようとしています。今はそのように動作せず、ランダムな注文を返しています。 forEachの次のループが起こる前に、約束を待つ方法がありますか?私はそれが非同期のコールバックのためだと思った。または私はそれを誤解しています。
exports.fetchHomeCollection = (req, res, next)=>{
const collection = [];
Category.find({count : { $gt : 0}}).then(categories =>{
async.forEach(categories, function(item, next){
console.log("item.strId = ", item.strId);
Photo.find({isDefault:true, category:item.strId}).then((photo)=>{
console.log("photo = ", photo);
collection.push(photo[0]);
next();
});
},
function(err){
if(err) console.log("fetchHomeCollection async forEach error");
res.send(collection);
});
})
}
私は私のmongoose.promise
としてglobal.Promiseを使用しています:
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;