我怎樣才能將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