У меня возникла проблема при получении результатов от запросов API REST, которые возвращают JSON объектов.
Как получить результаты в шаблоне Jade?
if team
each member in team[0].members
.team-member
h4= member.name
Как формат данных для этого объекта?
{
"team": [
{
"_id": "5e22f66a77011b3350a3285f",
"members": [
{
"_id": "5e264e4897534916ad8594a1",
"email": "email@server.com",
"name": "name",
"role": "Project Manager",
"twitter": "https://twitter.com/",
"facebook": "https://www.facebook.com/",
"linkedin": "https://www.linkedin.com/in//"
}
]
}
]
}
Это работает нормально, но мне нужно более одного запроса. То есть существует более одного объекта JSON.
Итак, у меня есть два запроса для вызова в одном контроллере, каждый из которых возвращает объект JSON. Я реализовал подход, который использует обещания, так что я могу ждать запросов до конца sh, и после этого я могу сохранить выходные данные каждого запроса в массиве, чтобы я мог выполнить только один раз.
Как отобразить данные?
for (var i = 0; i < results.length; i++) {
res.render('index', results[i]); // I cannot do it!
}
Я не могу этого сделать, потому что получаю какую-то ошибку в отношении заголовков, отправленных более одного раза: она возвращает ошибку вида => ERR_HTTP_HEADERS_SENT
Как выполнить рендеринг без ошибок для заголовков?
var output = [];
for (var i = 0; i < results.length; i++) {
output.push(results[i]);
//res.render('index', results[i]);
}
res.render('index', output);
Но теперь я не могу получить доступ к структуре "team" и "member" в JSON объекте.
Как бы я повторил это?
== РЕДАКТИРОВАТЬ ==
Получив несколько ответов, я думаю, что должен поделиться более подробной информацией о коде. Это выглядит следующим образом:
var url = ApiConfiguration.getApiURL();
var requests = [{
url: url + '/api/team/members/',
headers: {'headers': 'apitoken'}},
{
url: url + '/api/service/',
headers: {'headers': 'apitoken'}}
];
Promise.map(requests, function (obj) {
return request(obj).then(function (body) {
return JSON.parse(body);
});
}).then(function (results) {
var output = [];
for (var i = 0; i < results.length; i++) {
output.push(results[i]);
//res.render('index', results[i]);
}
res.render('index', output);
}, function (err) {
if (err)
console.log(err);
});