我正在学习使用Amazon Web Services构建API' API网关,DynamoDB和Lambda。
我一直关注Youtube上的视频播放列表教程。到目前为止,我已经创建了所需的Lambda函数,DynamoDB表以及API网关。
现在我需要做的就是建立一个前端,在表格和条目中显示我当前的项目。
到目前为止,我已经完成了这部分here。
在视频中,他使用JavaScript发出ajax请求并获取DynamoDB表中的项目。我用html编写了相同的ajax请求。
<html>
<head>
<h1 style="color:rosybrown;">Latest guestbook entries:</h1>
</head>
<body>
<div id="entries">
</div>
<h1>New Entry</h1>
<form>
<label for="msg">Message</label>
<textarea id="msg"></textarea>
<button id="submitButton">Submit</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
var API_URL = "someURL/prod/entries";
$(document).ready(function(){
$.ajax({
type: "GET",
url: API_URL,
success: function(data){
$("#entries").html("");
data.Items.forEach(function(guestbookItem){
$("#entries").append("<p>"+guestbookItem+"</p>");
})
}
});
});
</script>
</body>
所以我在这里解释我的目的。目标是显示我创建的DynamODB表中的项目,同时接受新条目。它有一个date
和message
项。
API网关具有/entries
资源,有两种方法GET
和POST
。 /prod
表示它已部署在生产阶段。
调用GET
方法的URL时。我收到了这个输出
"{\"Items\": [{\"date\": 20180512, \"message\": \"this is my 4th message\"}, {\"date\": 20180513, \"message\": \"I love AWS\"}], \"Count\": 2, \"ScannedCount\": 2, \"ResponseMetadata\": {\"RequestId\": \"SOME_REQUEST_ID\", \"HTTPStatusCode\": 200, \"HTTPHeaders\": {\"server\": \"Server\", \"date\": \"Mon, 14 May 2018 20:32:43 GMT\", \"content-type\": \"application/x-amz-json-1.0\", \"content-length\": \"160\", \"connection\": \"keep-alive\", \"x-amzn-requestid\": \"SOME_REQUEST_ID\", \"x-amz-crc32\": \"2401247050\"}, \"RetryAttempts\": 0}}"
但是,在本地主机上运行index.html
文件后。
条目没有出现。当我检查控制台时,结果发现我收到以下错误
index.html:33 Uncaught TypeError: Cannot read property 'forEach' of undefined
at Object.success (index.html:33)
at u (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at k (jquery.min.js:2)
at XMLHttpRequest.<anonymous> (jquery.min.js:2)
我不确定发生了什么事。响应中确实存在Items
。我已经坚持了好几天。如果有人能够指出我所缺少的东西,我将不胜感激!