在单独的JS文件中逐行迭代地将Item添加到HTML/EJS表中——使用NodeJS



每当加载某个页面时,我都会在一个名为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文件中名为restaurants的表中。现在,我只想将整个字符串添加到表中——因此,在迭代时,每个项都有一个条目。我稍后可以解析JSON。我不确定如何将这个函数放在ejs文件中,并在加载时调用它,或者这是否也能以同样的方式工作?如有任何帮助,我们将不胜感激!

也许,var x=[{no:1,title:'h',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>`)
}

若使用vanilajavascript,那个么要点是一样的。

你应该在获取数据后控制document.dom。

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

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

最新更新