我正在尝试将数据呈现到EJS页面,但无法将数据发送到EJS页面。目前,我正在从MSSQL数据库接收数据作为记录集。下面的屏幕截图给出了console.log(rows)的结果。
[https://i.stack.imgur.com/CItXQ.jpg][1]
数据库编码:
app.get('/data', receiveData);
function receiveData(req, res) {
db.executeSql("SELECT * FROM arduino", function (recordsets, err, ) {
var data = JSON.stringify(recordsets);
if (err) {
httpMsgs.show500(request, res, err);
}
else {
var Jdata = JSON.parse(data);
console.log(Jdata);
res.render('arduino',{Jdata:Jdata});
}
});
}
Ejs编码
<table border="1" cellpadding="7" cellspacing="7">
<tr>
<th> - </th>
<th>ID</th>
<th>Machine</th>
<th>Start Time</th>
<th>End Time</th>
<th>Length Time</th>
<th> Day/Night</th>
<th>Job Number</th>
</tr>
<% if(Jdata.length){
for(var i = 0;i < Jdata.length;i++) { %>
<tr>
<td><%=(i+1)%></td>
<td> </td>
<td><%=Jdata.recordset[0].Id %></td>
<td><%=Jdata.recordset[0].StartTime%></td>
<td><%=Jdata.recordset[0].EndTime%></td>
<td><%=Jdata.recordset[0].LengthTime%></td>
<td><%=Jdata.recordset[0].Day%></td>
<td><%=Jdata.recordset[0].JobNumber%></td>
</tr>
<% }
}else{ %>
<tr>
<td colspan="3">No Data</td>
</tr>
<% } %>
</table>
如果有人能帮助我,那就太好了。
谢谢。
答案 0 :(得分:1)
我希望以下答案能解决您的问题。您正在使用Jdata.length而不是Jdata.recordset.length。根据控制台日志,我理解这一点。
<table border="1" cellpadding="7" cellspacing="7">
<tr>
<th> - </th>
<th>ID</th>
<th>Machine</th>
<th>Start Time</th>
<th>End Time</th>
<th>Length Time</th>
<th> Day/Night</th>
<th>Job Number</th>
</tr>
<% if(Jdata.recordset.length){
for(var i = 0;i < Jdata.recordset.length;i++) { %>
<tr>
<td><%=(i+1)%></td>
<td> </td>
<td><%=Jdata.recordset[0].Id %></td>
<td><%=Jdata.recordset[0].StartTime%></td>
<td><%=Jdata.recordset[0].EndTime%></td>
<td><%=Jdata.recordset[0].LengthTime%></td>
<td><%=Jdata.recordset[0].Day%></td>
<td><%=Jdata.recordset[0].JobNumber%></td>
</tr>
<% }
}else{ %>
<tr>
<td colspan="3">No Data</td>
</tr>
<% } %>
</table>
答案 1 :(得分:0)
哦,那很容易,不要使用<%,而是使用<%-。例如:
type Product struct {
ID int `json:"id"`
Active bool `json:"active"`
Name string `json:"name"`
Price int `json:"price"`
}
<%- Jdata.length %>
将以HTML呈现<%=
将呈现变量(按实际值)
答案 2 :(得分:0)
每行注入的脚本都必须用<% ...your snippet line... %>
包装,以便将您的代码固定为:
<% if(Jdata.length) { %>
<% for(var i = 0;i < Jdata.length;i++) { %>
<tr>
<td><%=(i+1)%></td>
<td> </td>
<td><%=Jdata.recordset[0].Id %></td>
<td><%=Jdata.recordset[0].StartTime%></td>
<td><%=Jdata.recordset[0].EndTime%></td>
<td><%=Jdata.recordset[0].LengthTime%></td>
<td><%=Jdata.recordset[0].Day%></td>
<td><%=Jdata.recordset[0].JobNumber%></td>
</tr>
<% } %>
<% }else{ %>
<tr>
<td colspan="3">No Data</td>
</tr>
<% } %>
答案 3 :(得分:-1)
在我的情况下,错误是我试图访问对象而不是数组。
因此,我将model.find()
更改为model.findOne()
并像<%=user.username%>
一样进行访问。