在node/express ejs中使用JSON.stringfy(obj)



我试图使用JSON.stringify将一个对象传递到我的视图,但我不知道如何访问对象中的元素。以下是我如何将对象传递到我的视图:

const getTracking = (request, response) => {
pool.query('SELECT * FROM tracking', (error, results) => {
if (error) {
throw error
}
var trackingObj = JSON.stringify(results.rows);
response.render('pages/trackingInfo', {
trackingObj: trackingObj
});
})
}

然后在我的index.ejs文档中,我可以访问我的对象,如下所示:

<p><%= trackingObj %></p>

这会在浏览器中产生以下输出(数据是从postgres数据库中获取的):

[{"wo_num":1,"completion_date":"2021-08-04T04:00:00.000Z","material":"test","description":"test","qty":1,"total_hours":null},
{"wo_num":2,"completion_date":"2021-08-05T04:00:00.000Z","material":"test2","description":"test2","qty":2,"total_hours":2},

有没有一种方法可以单独访问这个JSON.stringify对象的元素,这样我就可以做一些事情,比如在表中显示它们?

JSON.parse('<%- JSON.stringify(trackingObj) %>')

如果你只想看到你也可以使用的内容(将显示在终端上

<% console.log(trackingObj) %>

为了获得更好的视图:

<% console.table(trackingObj) %>

@Jayesh评论道,解决方案是使用如下索引访问对象:trackingObj[0].material

要在表中显示元素,您可以按以下方式对其进行迭代:

<% trackingObj.forEach(function(obj) { %>
<tr>
<td> <%= obj.material %> </td>
<td> <%= obj.wo_num %> </td>
<tr>
<% } %>

最新更新