我刚刚开始学习API。我在这个问题上绊脚石。 我的目标:我很想同时对Marvel API进行两次调用。第一次调用将获取有关字符及其ID的所有数据,然后将它们捆绑到一个变量中,并将其保存在数据库中。现在,第二个调用将获取所有漫画数据,并将这些数据嵌入到第一个调用中创建的角色对象。现在,我有了这个完整的字符变量。然后,我可以将其发送到视图引擎。但是我不知道该怎么做。有没有更简单的方法来解决这个问题?你们能告诉我我在做什么错吗...
//Mongoose model set up for Thumbnail > path,and extension
var Schema = mongoose.Schema;
var thumbnailSchema = new Schema({
path: "String",extension: "String"
});
var thumbnailPath = mongoose.model('thumbnailPath',thumbnailSchema);
//Mongoose model set up for Comics
var Schema = mongoose.Schema;
var comicsSchema = new Schema({
title: "String",imagePath: [thumbnailSchema]
});
var Comics = mongoose.model('Comics',comicsSchema);
//Mongoose model set up for Character
var Schema = mongoose.Schema;
var characterSchema = new Schema({
id: "Number",name: "String",description: "String",imagePath: [thumbnailSchema],comicsPath: [comicsSchema]
});
var Character = mongoose.model('Character',characterSchema);
//Create POST
app.post('/',function(request,response){
var characterData = request.body.character;
var url = "https://gateway.marvel.com/v1/public/characters?name=" + characterData + "&ts=thor&apikey=PRIVATe"
Request(url,function(error,res,body){
var apiData = JSON.parse(body)
if(!error && res.statusCode == 200){
var newCharacter = Character ({
id: apiData.data.results[0].id,name: apiData.data.results[0].name,description: apiData.data.results[0].description
});
newCharacter.imagePath.push({
path: apiData.data.results[0].thumbnail.path,extension: apiData.data.results[0].thumbnail.extension
});
} else {
var characterID = newCharacter.id
var comicsURL = "https://gateway.marvel.com/v1/public/characters/" + characterID + "/comics?limit=5&ts=thor&apikey=PRIVATE";
Request(comicsURL,body){
if(!error && res.statusCode == 200){
var comicsData = JSON.parse(body)
var newComics = Comics({
title: comicsData.data.results[0].title,});
newComics.imagePath.push({
path: comicsData.data.results[0].thumbnail.path,extension:comicsData.data.results[0].extension
});
newCharacter.imagePath.push({newComics})
console.log(newComics);
}
})
}
})
});