使用NodeJS错误通过API网关从AWS Dynamodb获取数据

时间:2018-05-14 22:10:56

标签: amazon-web-services amazon-dynamodb

我正在学习使用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表中的项目,同时接受新条目。它有一个datemessage项。

API网关具有/entries资源,有两种方法GETPOST/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。我已经坚持了好几天。如果有人能够指出我所缺少的东西,我将不胜感激!

0 个答案:

没有答案