Wie kann ich Mungo in db speichern, aber warten andere Sammlung zuerst laden? Die Plattform und Genres ist leer, weil die "Speichern" -Funktion vor Plattform und Genres geladen, bitte helfen!Node.JS + Mongoose Rückruf-Hölle
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);
}
});
}
Mongoose bereits wieder verspricht, wenn Sie die Callback-Funktion weglassen. – Tracker1
Vielen Dank, dass Sie darauf hingewiesen haben. Ich wollte nur erklären, wie man Versprechungen für jemanden verwendet, der aus einem synchronen Hintergrund kommt. – hyades
@hyades, schön, aber was ist, wenn Sie drei Array zu bekommen haben, mischen Sie einfach platformPromises und genrePromises in "result", wie sieht die "for" -Funktion aus, wenn es drei Arrays gibt? Beispiel platformPromises, genrePromises, themePromises – tonywei