数据未渲染到Node JS中的EJS页面中

时间:2018-12-10 04:20:41

标签: javascript node.js json sql-server ejs

我正在尝试将数据呈现到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>

如果有人能帮助我,那就太好了。

谢谢。

4 个答案:

答案 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%>一样进行访问。