RESOLVIDO: Acessar valores de um array e exibí-los separadamente sem passar a key

Fala Galera, tenho uma aplicação WEB em Node.JS e estou desenvolvendo uma tela onde o usuário faz suas próprias consultas SQL, ao digitar o SELECT no formulário, a Query é enviada no POST da rota e na rota retorno o resultado da query em um Array e este array é passado como parâmetro no render da página para popular um JTable do bootstrap.

Normalmente
Em uma consulta conhecida onde sei a tabela que preciso popular a JTable ja defino a coluna de títulos:

<!-- Cabeçalho: Titulos da tabela -->
<thead class="thead-light">
    <tr>
         <th scope="col">Cod</th>
         <th scope="col">Aviso</th>
    </tr>
</thead>

E no conteúdo da tabela faço um forEach e populo as linhas conforme qtde de registros que possui:

<tbody>
    <!-- Detalhes: Dados da tabela -->
    <% DTAvisos.forEach((row, index) => { %>
         <tr>
              <td><%= row.cod %></td>  
              <td><%= row.aviso %></td>
         </tr>
    <% }) %>
</tbody>

Problema
Porém neste caso eu não sei a tabela específica pois foi o usuário que gerou a query, então para popular a JTable eu preciso:

  1. Saber os nomes das colunas para eu gerar a linha de título da tabela (<tr> <th>)

  2. Popular as linhas com os valores sem informar o nome da coluna (<td><%= row.**cod** %></td>)

O item 1 eu consegui, vejam:

<table id="TBtable" class="table table-hover" style="display: none;">
     <tbody>
          //DTResultado é o array que estou recebendo para popular a JTable
          <tr>
              <% Object.keys(DTResultado[0]).forEach((row, index, array)=> { %>
                 <td>
                     <%= row %> //Aqui está exibindo os nomes das colunas ok
                 </td>
              <% }) %>
          </tr>

Resultado da linha título da JTable:

Ai quando eu tento popular os valores da mesma forma não rola, se eu coloco somente <%= row %>
exibi os registros somente na primeira coluna, daria certo se eu colocasse <%= row.cod %>, <%= row.data%>, <%= row.nome_da_coluna %>ou seja, informando o nome da coluna no row ai da certo mas lembrem-se que eu não sei o nome da coluna, este é o código até onde consegui chegar:

  <!-- Detalhes: Dados da tabela -->
  <% var i = 0; %>
  <% while (i < Object.values(DTResultado).length) { %>
     <% Object.values(DTResultado[i]).forEach((row, index, array)=> { %>
        <tr>
           <td><%= row %></td>
        </tr>
     <% }) %>
     <% i++; %>
  <% } %>
 </tbody>
</table>

Este é o resultado com o código acima (só tenho 2 registros na tabela), está trazendo os dois registros mas traz tudo numa única coluna, eu preciso que venda cada valor em sua coluna:

Por favor, podem me ajudar?

Como faço para popular as linhas da JTable através desse array sem passar alí no <td> o nome da coluna, ou se existe uma forma de eu passar o nome da coluna usando o loop que fiz anteriormente pegando os nomes das colunas (já tentei mas não consegui). Ou pegar este meu resultado atual e ao invez de mostrar na vertical mostrar na horizontal, sei lá.

Caraca, montando a pergunta aqui acabei conseguindo hehehe, segue solução:

<!-- Detalhes: Dados da tabela -->
<% var i = 0; %>
<% while (i < Object.values(DTResultado).length) { %>                                           
<tr>
    <% Object.values(DTResultado[i]).forEach((row, index, array)=> { %>
     <td><%= row %></td>
     <% }) %>
</tr>                                            
     <% i++; %>                                            
<% } %>
</tbody>
</table>

Valeu.

1 curtida