如何使用NodeJS从json数据构建动态html表?

如何使用NodeJS从json数据构建动态html表?,json,node.js,express,ejs,Json,Node.js,Express,Ejs,nodejs+express+postgres有一个自我教育的小项目。通过请求Postgres,我获得json格式的数据,然后将express工具上的数据呈现到ejs模板。问题是如何将这个json添加到html中的动态表中 对数据库的请求如下所示 const pool = new pg.Pool(config); router.get('/index', (req, res, next) => { pool.connect(function (err, client,

nodejs+express+postgres有一个自我教育的小项目。通过请求Postgres,我获得json格式的数据,然后将express工具上的数据呈现到ejs模板。问题是如何将这个json添加到html中的动态表中

对数据库的请求如下所示

    const pool = new pg.Pool(config);

 router.get('/index', (req, res, next) => {
    pool.connect(function (err, client, done) {
        if (err) {
            console.log("Can not connect to the DB" + err);
        }
        client.query('SELECT * FROM srt_final WHERE info_init @> \'{"subscriber":"999999"}\' ORDER BY id DESC LIMIT 20', function (err, result) {
             done();
             if (err) {
                 console.log(err);
                 res.status(400).send(err);
             }
             var osaka = result.rows;

                     res.render('index', {  srt: osaka });
        })

    })
 });
数据本身看起来像这样(大约30个值)


这并不是关于NodeJS的相关问题,你们可以研究html表格如何用html制作表格。然后使用像ejs这样的视图引擎,通过nodejs更好地呈现动态内容

参考:

var html='';
html+='';
var标志=0;
$.each(数据[0],函数(索引,值){
html+=''+索引+'';
});
html+='';
$.each(数据、函数(索引、值){
html+='';
$.each(值,函数(index2,value2){
html+=''+value2+'';
});
html+='';
});
html+='';
$('body').html(html);
使用html表格


我将从json创建html表,可能有点太晚了,但我发现的解决方案没有很好地工作。我需要更简单的东西,而不是模板引擎或库。另外,当我试图从Mongoose响应生成表时,提到的npm包HTMLTablify对我不起作用。顺便说一句,很抱歉我的英语不好

const row = html => `<tr>\n${html}</tr>\n`,
      heading = object => row(Object.keys(object).reduce((html, heading) => (html + `<th>${heading}</th>`), '')),
      datarow = object => row(Object.values(object).reduce((html, value) => (html + `<td>${value}</td>`), ''));
                               
function htmlTable(dataList) {
  return `<table>
            ${heading(dataList[0])}
            ${dataList.reduce((html, object) => (html + datarow(object)), '')}
          </table>`
}

const set = [
  {_id: 1234,
    usuario: 'user1',
    clave: 'pass1' },
  {_id: 12345,
    usuario: 'user2',
    clave: 'asdas' },
  {_id: 12357,
    usuario: 'user3',
    clave: 'asdasd' },
  {_id: 12376,
    usuario: 'user5',
    clave: 'asdasd' }
];

htmlTable(set)
const row=html=>`\n${html}\n`,
heading=object=>row(object.keys(object.reduce)((html,heading)=>(html+`${heading}'),“”)),
datarow=object=>row(object.values(object.reduce)((html,value)=>(html+`${value}'),'');
函数htmlTable(数据列表){
返回`
${标题(数据列表[0])}
${dataList.reduce((html,对象)=>(html+datarow(对象)),“”)
`
}
常数集=[
{u id:1234,
usuario:'user1',
clave:'pass1'},
{u id:12345,
usuario:'user2',
克莱夫:“阿斯达斯”},
{u id:12357,
usuario:'user3',
clave:'asdasd'},
{u id:12376,
usuario:'user5',
clave:'asdasd'}
];
htmlTable(集)
输出:

<table>
  <tr>
    <th>_id</th>
    <th>usuario</th>
    <th>clave</th>
  </tr>   
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
</table>

_身份证
乌萨里奥
克拉夫
123
除息的
自闭症
123
除息的
自闭症
123
除息的
自闭症
123
除息的
自闭症
它是如何工作的。。。其实很简单。
函数将一些值包装在标记中。
heading
,在另一侧,获取一个对象,并基于该对象自己的键创建表标题html。
datarow
,获取一个对象,并生成该行的所有单元格 heading和datarow函数都使用row函数返回一行html代码。
htmlTable
函数接收对象列表,只返回完整表的html代码


通过一些调整,可以轻松添加标记格式、属性和样式。

谢谢您的回答,但在我使用此示例时,我得到了以下结果:id info_init info_final state 12293245[object object][object]1 12291387[object object][object object]1Ref:我创建了一个示例,因为您的对象在键“info_init”中有一些嵌套数据。您能告诉我如何显示所有“info_init”的内容吗?info_init的意思是?[{“id”:11653167,“info_init”:{“date”:“05.07.2018”},.{“Time”:“10:31:17”},{“id”:11653168,“info_init”:{:},{:},{:},{:}也就是说,在表格中填入仅限内容的“info_init”您是否使用任何temple引擎
const row = html => `<tr>\n${html}</tr>\n`,
      heading = object => row(Object.keys(object).reduce((html, heading) => (html + `<th>${heading}</th>`), '')),
      datarow = object => row(Object.values(object).reduce((html, value) => (html + `<td>${value}</td>`), ''));
                               
function htmlTable(dataList) {
  return `<table>
            ${heading(dataList[0])}
            ${dataList.reduce((html, object) => (html + datarow(object)), '')}
          </table>`
}

const set = [
  {_id: 1234,
    usuario: 'user1',
    clave: 'pass1' },
  {_id: 12345,
    usuario: 'user2',
    clave: 'asdas' },
  {_id: 12357,
    usuario: 'user3',
    clave: 'asdasd' },
  {_id: 12376,
    usuario: 'user5',
    clave: 'asdasd' }
];

htmlTable(set)
<table>
  <tr>
    <th>_id</th>
    <th>usuario</th>
    <th>clave</th>
  </tr>   
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
  <tr>
     <td>123</td>
     <td>xD</td>
     <td>asd</td>
  </tr>
</table>