javascript - 一次向 api 发出多个请求并将结果显示给模板视图引擎
问题描述
我刚开始学习 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,function(error,res,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);
}
})
}
})
});
解决方案
每个人......我设法通过使用请求承诺 https://github.com/request/request-promise库来解决这个问题。现在,与从 API 中搜索到的角色以及漫画前面一起。我可以将其保存到变量中,然后将其带到数据库中进行存储;这是在后台发生的。完成后,我们希望可以成功地将其传递(将会看到)到模板引擎进行查看。供以后参考...... 代码 code2
推荐阅读
- javascript - 如何保持获取队列有序
- c++ - 如何在 ue4 中使用 OnFinishedPlaying 和 c++ 编程?
- c++ - 为在 hpp 和 cpp 中声明的对象生成 moc 文件
- php - PHP将数据从一页传递到另一页
- sharepoint - 如何将静态网站发布到 SharePoint
- javascript - 猫头鹰轮播仅在包含部分焦点时自动播放
- docker - Kubernetes-Help Needed-FailedMount 3m38s
- ruby-on-rails - Rails:通过模型列之间的匹配进行过滤
- reactjs - 如何在 react js 中从 tinymc 编辑器中获取价值?
- ember.js - 为什么我的动作没有在带有 ember js 的模式内部触发?