Делать несколько запросов к api одновременно и отображать результат в движке представления шаблона - PullRequest
0 голосов
/ 11 ноября 2019

Я только начал изучать API. И я наткнулся на эту проблему. МОЯ ЦЕЛЬ: Я хотел бы сделать два отдельных вызова, чтобы удивить API одновременно. Первый вызов получит все данные о персонаже и его идентификаторе, затем я соберу их вместе в переменную и сохраню в базе данных. Теперь второй вызов получит все данные комиксов, и эти данные будут включены в символьный объект, созданный во время первого вызова. Теперь, когда у меня есть эта полная символьная переменная. Затем я могу отправить его на просмотр двигателя. Но я не знаю, как это сделать. Есть ли более простой способ решения этой проблемы? Ребята, пожалуйста, дайте мне знать, что я делаю не так ...

//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);
                }
            })
        }
    })
});

1 Ответ

0 голосов
/ 13 ноября 2019

Все ... Мне удается снять это с помощью request-обещания https://github.com/request/request-promise библиотеки. Теперь с искомым персонажем из API, а также с комиксом спереди вместе. Я могу сохранить его в переменной, а затем перенести в базу данных;это происходит на заднем плане. После этого мы можем, надеюсь, успешно передать его (увидим) движку шаблонов для просмотра. Для будущих ссылок ...... код код2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...