我在从返回 JSON 对象的 REST api 请求中获取结果时遇到问题。
我如何在翡翠模板中获得结果?
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//"
}
]
}
]
}
这工作正常,但我需要多个请求。也就是说,有不止一个 JSONs 对象。
所以,我有两个请求在同一个控制器中调用,每个请求都返回一个 JSON 对象。我已经实现了一种使用承诺的方法,这样我就可以等待请求完成,然后我可以将每个请求的输出存储在一个数组中,这样我就只能渲染一次。
如何渲染数据?
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);
但现在我无法访问 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);
});