不确定我是否使用了正确的术语,因为我刚开始修改node和JS,所以我还是新手。我在尝试从传递到EJS的猫鼬访问查询中的属性/元素时遇到问题。
这是运行查询并将其传递到EJS中的代码。通过res.send(tableContents)直接将数据直接发送到页面时,该信息似乎采用了正确的格式,至少对我而言,它看起来像JSON。
router.get('/', async (req, res) => {
const tableContents = await Server.find({})
res.render('webpage/index', { navSideeBarActions: navSideeBarActions, allServers: tableContents });
});
但是,我试图将此数据追加到表中,现在,我只是通过枚举allServers变量中的所有项目并使用来对值进行硬编码。将价值放在我想要的地方。我似乎遇到了两个问题,但似乎无法弄清楚问题是什么。问题之一是,每次尝试访问属性为带有两个单词的标头的值时,在编译EJS时都会遇到意外的字符串错误。 Server的第一个值返回正常,但其他所有我需要用引号引起来的带有多个单词值的其他值都失败了。
<% allServers.forEach(server => { %>
<tr>
<td><%= server.Server %></td>
<td><%= server."HyperVisor Type" %></td> #This line fails/causes compile error
</tr>
<% }) %>
我也尝试过使用for循环进行更动态的处理,但是尝试这样做也遇到错误,并指出[尝试在服务器的每次迭代中使用每个值的索引时,[并非预期。]
<% allServers.forEach(server => { %>
<% for(let i = 1; i < server.length; i++) { %>
<tr>
<td><%= server[i] %></td>
</tr>
<% }) %>
我周围的一些搜索表明它实际上可能不是采用正确的JSON格式,但据我所知是这样吗?我已经尝试了一些使用stringify和parse的示例,但是它们似乎没有用。考虑到这些属性可以正常工作,但直接通过EJS运行时却无法达到预期效果,因此我无法确定是否需要使用某种转义符来使其正常运行。