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

时间:2018-11-09 19:51:32

标签: javascript html node.js

每当加载特定页面时,我都会在名为database.js的文件中定义一个函数。关联的页面是loginpage.ejs,该页面以空白表格元素开头。

在database.js的此函数中,我以循环方式从DynamoDB检索值,并使用JSON解析函数解析每个条目。

这是功能。

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文件,其表定义如下所示。 loginpage.ejs

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

所以console.log打印每个项目...但是我想将每个项目添加到ejs文件中名为restaurant的表中。现在,我只想将整个字符串添加到表中,以便在迭代时为每个项目添加一个条目。我可以弄清楚以后再剖析JSON。 我不确定如何将该函数放置在ejs文件中并在加载时调用它,或者是否可以相同的方式工作?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

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

获取数据后

以防万一,

$("#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,则指向相同。

获取数据后,您应该控制document.dom。

答案 1 :(得分:0)

在不知道表单的情况下,您将获取数据:

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);
                    }
            }
        }
    });
};