Вам нужно сделать оба вызова API ПЕРВЫМ, а затем вызвать res.render()
, когда у вас есть объединенные результаты. Самый современный способ сделать это - использовать обещания, и вы можете использовать библиотеку запросов-обещаний для той, которая является многообещающей версией библиотеки запросов, которую вы используете в настоящее время:
const rp = require("request-promise");
app.get('/users', function (req, res) {
var url = apiUrl + '/users' + apiKey,
url_test = apiUrl + '/projects' + apiKey;
Promise.all([rp({uri: url, json:true}), rp({uri: url_test, json:true})]).then(([apiData, apiData-test]) => {
res.render('index', {apiData, apiData-test});
}).catch(err => {
console.log(err);
res.sendStatus(500);
});
});
json: true
опция автоматически проанализирует JSON для вас.
Если вы не знали, библиотека request()
и ее производные теперь находятся в режиме обслуживания и не будут получать никаких новых функций. Список альтернатив здесь . Я использую got()
, и ваш код, который используется, будет следующим:
const got = require('got');
app.get('/users', function (req, res) {
var url = apiUrl + '/users' + apiKey,
url_test = apiUrl + '/projects' + apiKey;
Promise.all([got(url).json(), got(url_test).json()]).then(([apiData, apiData-test]) => {
res.render('index', {apiData, apiData-test});
}).catch(err => {
console.log(err);
res.sendStatus(500);
});
});