我怎样才能将mongoose保存到数据库,但是等待其他数据集首先加载? 平台和流派是空的,因为“保存”功能在平台和流派加载之前运行,请大家帮忙!Node.JS + Mongoose回调地狱
var platforms = []; //load platforms
body.release_dates.forEach(function(elem){
Platform.findOne({ id : elem.platform}, function(err, result) {
platforms.push(mongoose.Types.ObjectId(result._id));
});
});
var genres = []; //load genre
body.genres.forEach(function(elem){
Genre.findOne({id: elem}, function(err, result){
genres.push(mongoose.Types.ObjectId(result._id));
})
});
//prepare to save!
var game = {
igdb_id : body.id,
name : body.name,
summary : body.summary,
storyline : body.description,
genres : genres,
platforms : platforms, // <- genres amd platforms empty and not wait platforms and genre array to complete
release_date : body.original_release_date,
cover : body.cover.cloudinary_id,
videos: body.videos
};
var data = new Game(game);
data.save(function(err, game){
if(err){
res.send("500");
return console.error(err);
}
});
}
猫鼬已如果你离开过回调函数返回的承诺。 – Tracker1
谢谢你指出。只是想解释如何使用承诺,来自同步背景的人。 – hyades
@hyades,不错,但是如果你有三个数组,那么你只需在“result”中混合platformPromises和genrePromises,如果有三个数组,那么“for”函数是什么样的? 例如,platformPromises,genrePromises,themePromises – tonywei