代码之家  ›  专栏  ›  技术社区  ›  rubyquartz

使用NodeJS将单独JS文件中的项按行迭代地添加到HTML/EJS表中

  •  1
  • rubyquartz  · 技术社区  · 6 年前

    在database.js的这个函数中,我在一个循环中从DynamoDB检索值,使用JSON parse函数解析每个条目。

    这是函数。

    var get_restaurants = function(route_callbck){
    
            var AWS = require('aws-sdk');
            AWS.config.loadFromPath('./config.json');
    
            var async = require('async');
    
            var docClient = new AWS.DynamoDB.DocumentClient();
            var params = {
                TableName: "restaurants"
            };
            var count = 0;
            docClient.scan(params).eachPage((err, data, done) => {
                if (data != null) {
                    for (let index = 0; index < data.Items.length; index++) {
                        const element = data.Items[index];
                        var str = JSON.stringify(element);                   
                        var x = JSON.parse(str);
                        //var x is the whole item- how do I put this in a table?
                        console.log(x);
                    }
                }
                done();
            });
            }; 
    

    我有一个ejs文件,其中定义了一个表,如图所示。登录页.ejs

    <table name="restaurants"></table>
    

    2 回复  |  直到 6 年前
        1
  •  0
  •   곽대용    6 年前

    也许,var x=[{no:1,title:'hh',date:'2018-11-2'..},{..etc}]。正确的?

    获取数据后,

    如果是jquery,

    $("#restaurants").append(`<tr>
                                  <td>no</td>
                                  <td>title</td>
                                  <td>date</td> 
                              </tr>`)
    for(let i = 0; i<x.length; i++){
        $("#restaurants").append(`<tr>
                                      <td>${i}</td> 
                                      <td>${x.title}</td>
                                      <td>${x.date}</td>
                                  </tr>`)
    }
    

    如果您使用vanila javascript,那么这一点是相同的。

        2
  •  0
  •   Sven Liivak    6 年前

    在不知道获取数据的形式的情况下:

    let restoTable = document.getElementById('restaurants');
    
    var get_restaurants = function(route_callbck){
        var AWS = require('aws-sdk');
        AWS.config.loadFromPath('./config.json');
        var async = require('async');
    
        var docClient = new AWS.DynamoDB.DocumentClient();
        var params = {
            TableName: "restaurants"
        };
        docClient.scan(params).eachPage((err, data, done) => {
            if (data != null) {
                for(var index=0; index<data.Items.length; index++) {
                    var record = data.Items[index];
                    var newRow = restoTable.insertRow(index); //insert new row to the end of a table
                    var dataArr = Object.values(record); //convert record to an array, if needed. Perhaps you already have...
                        for(var c=0; c<dataArr.length;c++){
                            var newCell = newRow.insertCell(c); //insert new cell to the end of the row...
                            var newText  = document.createTextNode(dataArr[c]); //...and fill it
                            newCell.appendChild(newText);
                        }
                }
            }
        });
    };