在 HTML 页面的 id 部分显示 DynamoDB 项目
Display DynamoDB items in id section of HTML page
使用 Lambda 函数,我扫描了数据库的项目。我的挑战是获取这些内容,并在单击按钮时在我的
HTML代码
<p id="all"><b>Show all</b>
<button onclick="getAll()"><b>Get</b></button>
</p>
Javascript getAll()
代码
</script>
function getAll(itemStr) {
var itemObj=JSON.parse(itemStr);
var htm = "";
var item;
for (item in itemObj) {
var data = itemObj[0];
if (typeof data !== 'object')
htm += '<li>'+item+' '+itemObj[item] +'</li>';
else
htm += '<li>' + item + ' ' + getAll(item) + '</li>';
}
return '<ul>'+htm+'</ul>';
}
</script>
数据库中的项目:
response=dynamodb.put_item(TableName='log', Item={'logID':{'S':str(datetime.now())},'text':{'S':文本}})
数据库项目返回为
[{'logID': {'S': '2021-03-23 04:06:46.687457'}, 'text': {'S': " {'chicken':false,'veggie':true,'beef':true,'pork':false,'Take-out':false,'Dine-in':true,'Other':false,'Door-Dash':false}"}},{'logID': {'S': '2021-03-23 02:11:21.440315'}, 'text': {'S': "{'chicken':false,'veggie':true,'beef':false,'pork':false,'Take-out':false,'Dine-in':true,'Other':false,'Door-Dash':false}"}}]
来自 XMLHttpRequest 的 console.log 的屏幕截图
根据您的示例数据,您可以按照下面的代码注释进行操作。
//Assumming that data is already an Array, if a string do a JSON.parse first
const itemData = [
{'logID': {'S': '2021-03-23 04:06:46.687457'},
'text': {'S': "{'chicken':false,'veggie':true,'beef':true,'pork':false,'Take-out':false,'Dine- in':true,'Other':false,'Door-Dash':false}"}},
{'logID': {'S': '2021-03-23 02:11:21.440315'},
'text': {'S': "{'chicken':false,'veggie':true,'beef':false,'pork':false,'Take-out':false,'Dine-in':true,'Other':false,'Door-Dash':false}"}}
]
function getAll(itemStr) {
let htm = ""
for (let item of itemStr){
htm += "<p>Log ID: " + item.logID.S + "</p>" + getAllItems(item.text.S)
}
//append list to paragraph tag
document.getElementById('section').innerHTML = "<ul>" + htm + "</ul>"
}
function getAllItems(textData){
let formattedString = textData.replaceAll(`'`, `"`) // replace all single qoute to double qoutes
//parse textData to JS Object
let data = JSON.parse(formattedString)
let listItems = ""
//loop for displaying data
for (let key in data) {
listItems += `<li>${key}:${data[key]}</li>`
}
return listItems
}
getAll(itemData)
<p id="section">
</p>
使用 Lambda 函数,我扫描了数据库的项目。我的挑战是获取这些内容,并在单击按钮时在我的
HTML代码
<p id="all"><b>Show all</b>
<button onclick="getAll()"><b>Get</b></button>
</p>
Javascript getAll()
代码</script>
function getAll(itemStr) {
var itemObj=JSON.parse(itemStr);
var htm = "";
var item;
for (item in itemObj) {
var data = itemObj[0];
if (typeof data !== 'object')
htm += '<li>'+item+' '+itemObj[item] +'</li>';
else
htm += '<li>' + item + ' ' + getAll(item) + '</li>';
}
return '<ul>'+htm+'</ul>';
}
</script>
数据库中的项目:
response=dynamodb.put_item(TableName='log', Item={'logID':{'S':str(datetime.now())},'text':{'S':文本}})
数据库项目返回为
[{'logID': {'S': '2021-03-23 04:06:46.687457'}, 'text': {'S': " {'chicken':false,'veggie':true,'beef':true,'pork':false,'Take-out':false,'Dine-in':true,'Other':false,'Door-Dash':false}"}},{'logID': {'S': '2021-03-23 02:11:21.440315'}, 'text': {'S': "{'chicken':false,'veggie':true,'beef':false,'pork':false,'Take-out':false,'Dine-in':true,'Other':false,'Door-Dash':false}"}}]
来自 XMLHttpRequest 的 console.log 的屏幕截图
根据您的示例数据,您可以按照下面的代码注释进行操作。
//Assumming that data is already an Array, if a string do a JSON.parse first
const itemData = [
{'logID': {'S': '2021-03-23 04:06:46.687457'},
'text': {'S': "{'chicken':false,'veggie':true,'beef':true,'pork':false,'Take-out':false,'Dine- in':true,'Other':false,'Door-Dash':false}"}},
{'logID': {'S': '2021-03-23 02:11:21.440315'},
'text': {'S': "{'chicken':false,'veggie':true,'beef':false,'pork':false,'Take-out':false,'Dine-in':true,'Other':false,'Door-Dash':false}"}}
]
function getAll(itemStr) {
let htm = ""
for (let item of itemStr){
htm += "<p>Log ID: " + item.logID.S + "</p>" + getAllItems(item.text.S)
}
//append list to paragraph tag
document.getElementById('section').innerHTML = "<ul>" + htm + "</ul>"
}
function getAllItems(textData){
let formattedString = textData.replaceAll(`'`, `"`) // replace all single qoute to double qoutes
//parse textData to JS Object
let data = JSON.parse(formattedString)
let listItems = ""
//loop for displaying data
for (let key in data) {
listItems += `<li>${key}:${data[key]}</li>`
}
return listItems
}
getAll(itemData)
<p id="section">
</p>