我无法在不丢失所有数据类型的情况下将数组从服务器端Express推送到我的EJS模板。我正在尝试使用Google图表显示一些数据。它需要一个这样格式化的数组,
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
在服务器上,我有以下代码以这种方式格式化数据,然后尝试将该数组发送到我的EJS模板。
router.get('/:id', function(req, res){
Poll.findById(req.params.id, function(err, poll){
if (err) {
console.log(err)
res.redirect('back')
} else {
var optionData = [...poll.options];
console.log(optionData);
var optionArray = []
optionData.forEach(function(option){
optionArray.push([option.text, option.count]);
})
console.log(optionArray);
res.render('../views/polls/show', {poll: poll, optionArray: optionArray})
}
})
})
console.log语句在服务器终端上显示以下结果。
server started
[ { count: 2, _id: 5b5d1d93e5a57807b97c6f6e, text: 'lets goo1' },
{ count: 0, _id: 5b5d1d93e5a57807b97c6f6d, text: 'here we go2' },
{ count: 2, _id: 5b5d1d93e5a57807b97c6f6c, text: 'nice nice 3' } ]
[ [ 'lets goo1', 2 ],
[ 'here we go2', 0 ],
[ 'nice nice 3', 2 ] ]
但是,当我尝试在EJS中使用我的optionArray时,源代码会将其转换为以下内容:
console.log(<%=optionArray%>)
ends up looking like this in the browsers source code
console.log(lets goo1,2,here we go2,0,nice nice 3,2)
有人知道从节点/表达式传递到EJS时如何保留数组结构吗?
答案 0 :(得分:0)
<ul>
<% for(var i=0; i<optionsArray.length; i++) { %>
<li>
<%= console.log(optionsArray[i]) %>
</li>
<% } %>
</ul>
在您的ejs模板中尝试类似的操作,它在您的optionsArray上循环进行for循环,并且对同一数组进行索引