我有一个返回整个表的查询。 我发现将数据显示为HTML表的唯一方法是为每列创建一个数组:
var date = [];
for (var i in arr) {
date[i] = arr[i].nullinfoDate;
}
var number = [];
for (var i in arr) {
number[i] = arr[i].nullinfoNumber;
}
var bool = [];
for (var i in arr) {
bool[i] = arr[i].nullinfoBool;
}
var text1 = [];
for (var i in arr) {
text1[i] = arr[i].nullinfoText1;
}
var text2 = [];
for (var i in arr) {
text2[i] = arr[i].nullinfoText2;
}
然后将所有列发送到HTML模板:
app.get('/', function (req, res) {
res.render('index', {
title: 'home',
date: date,
number: number,
bool: bool,
text1: text1,
text2: text2
});
});
但这感觉非常低效。有没有更好的方法呢?
HTML(EJS)模板:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title><%= title %></title>
</head>
<body>
<h1><%= title %></h1>
<table>
<% for(var i = 0; i < date.length; i++) {%>
<tr>
<td><%= date[i] %></td>
<td><%= number[i] %></td>
<td><%= bool[i] %></td>
<td><%= text1[i] %></td>
<td><%= text2[i] %></td>
</tr>
<% } %>
</table>
</body>
</html>
答案 0 :(得分:1)
似乎直接传递查询返回的数据就足够了:
app.get('/', function (req, res) {
res.render('index', {
title: 'home',
data: arr
});
});
然后在你的模板中,你可以这样做:
<table>
<% for (let datum of data) {%>
<tr>
<td><%= datum.nullinfoDate %></td>
<td><%= datum.nullinfoNumber %></td>
<td><%= datum.nullinfoBool %></td>
<td><%= datum.nullinfoText1 %></td>
<td><%= datum.nullinfoText2 %></td>
</tr>
<% } %>
</table>