JavaScript 动态对象键 ejs

标签 javascript mysql node.js ejs

我真的找不到描述这个的方式。本质上,我有一个数据库,可以包含任意数量的具有不同列长度和名称的表。我有一个表,它定义了每个表及其列。我有一个查询来搜索这些表中的值,我使用 express 将搜索结果和列传递给 ejs。我需要的是回应结果。我有:

<div class="row">
<table>
    <thead>
        <tr>
            <% columns.forEach(function(column) { %>
                <th><%= column %></th>
            <% }); %>
        </tr>
    </thead>
    ...

这会正确输出表头中的列名。然而,我终生无法弄清楚如何打印实际结果。我尝试了很多不同的方法,但我得到的只是未定义或 [Object object]。我目前有这个:

<tbody>
        <% for(var r = 0; r < results.length; r++) { %>
            <tr>
                ... need to access column here ...
            </tr>
        <% } %>
    </tbody>

我首先尝试了以下(在上面)

<% for(var key in Object.keys(results[r])) { %>
    <%= results[r].key %>
<% } %>

随后进行了许多不同的尝试。我想问题是不知道可能的键名。老实说,我什至不知道要搜索什么。我的脑子一片空白。

非常感谢任何帮助。

最佳答案

Object.keys 返回对象中所有键的数组。您可以使用 forEach 迭代这些键,通过 object[key]

访问对象的值

此外,您可以在结果中使用 forEach 而不是 for 来保持整洁。

<% results.forEach(function (result) { %>
  <tr>
  <%  Object.keys(result).forEach(function (key) { %>
    <td><%= result[key] %> </td>
  <% }) %>
  </tr>
<% }) %>

现代浏览器现在有箭头,所以可以稍微简化一下:

<% results.forEach(result => { %>
  <tr>
  <%  Object.keys(result).forEach(key => { %>
    <td><%= result[key] %> </td>
  <% }) %>
  </tr>
<% }) %>

关于JavaScript 动态对象键 ejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34247092/

相关文章:

javascript - Azure Functions Http 触发器 - DocumentDB 输出集成 Microsoft.Azure.Documents.Client : Value cannot be null

javascript - Bootstrap datetimepicker 在 Bootstrap Collapse 内部时不触发

javascript - 在 Twitter Bootstrap 上切换复选框

php - 如何在 Mysql 中实现搜索查询

php - MySQL:用户 some_user_name 已经有超过 'max_user_connections' 个事件连接

node.js - 如何在electron项目中成功使用express routing?

javascript - Grails 刷新谷歌图表

php - 将字符串添加到 JSON 数组中的一行

node.js - 字段列表中的未知列 Sequelize

javascript - 逗号在 Node.js 中是必需的吗?