【问题标题】:Dynamo DB getItem with node js throwing error带有节点js的Dynamo DB getItem抛出错误
【发布时间】:2015-07-15 08:44:02
【问题描述】:

我是 Javascript 和 DynamoDB 的新手。我正在尝试在 nodejs 中使用 aws-sdk for javascript 执行 getitem。 Dynamo 表 Cars 的主索引是“名称”一个字符串。

var AWS = require('aws-sdk');
AWS.config.region='eu-west-1';
var db = new AWS.DynamoDB();

var params = {
TableName : 'Cars',
            Key : {
                    "name" : {
                            "S" : "Volkswagen Dasher"
                    },
            }
}

db.getItem(params, function(err, data) {
                if (err) {
                console.log(err); // an error occurred
                }
                else {
                console.log(data); // successful response
                }
                return next();
                });

在运行上述 .js 文件时,我收到以下错误。

 ubuntu@ubuntu:~/node$ node getItem.js  
 {}
 /home/ubuntu/node_modules/aws-sdk/lib/request.js:30
             throw err;
                   ^ ReferenceError: next is not defined
     at Response.<anonymous> (/home/ubuntu/node/getItem.js:21:10)
     at Request.<anonymous> (/home/ubuntu/node_modules/aws-sdk/lib/request.js:353:18)
     at Request.callListeners (/home/ubuntu/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
     at Request.emit (/home/ubuntu/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
     at Request.emit (/home/ubuntu/node_modules/aws-sdk/lib/request.js:595:14)
     at Request.transition (/home/ubuntu/node_modules/aws-sdk/lib/request.js:21:10)
     at AcceptorStateMachine.runTo (/home/ubuntu/node_modules/aws-sdk/lib/state_machine.js:14:12)
     at /home/ubuntu/node_modules/aws-sdk/lib/state_machine.js:26:10
     at Request.<anonymous> (/home/ubuntu/node_modules/aws-sdk/lib/request.js:37:9)
     at Request.<anonymous> (/home/ubuntu/node_modules/aws-sdk/lib/request.js:597:12)

请帮帮我。干杯!

【问题讨论】:

标签: javascript node.js amazon-dynamodb aws-sdk


【解决方案1】:

很高兴看到您尝试使用 DynamoDB!我不确定我是否理解您的代码的上下文,但如果您的目标是进行简单的 GetItem 调用,则不需要“return next()”语句。鉴于 javascript 的事件驱动性质,这些回调是异步的,并不会真正“返回”任何东西。相反,您应该检查response(数据)并相应地执行操作。

I.E.

dynamoDB.getItem(params, function(err, data) {
                     if (data) {
                        doSomethingWithItem(data.Item);
                     }
                 });

另外,如果您刚刚开始,我建议您查看document-js-sdk,它是原始 SDK 之上的一个包装器,允许您使用诸如“string”之类的文字而不是 {S:“string "}。

【讨论】:

猜你喜欢
  • 2018-06-18
  • 2021-01-31
  • 2015-09-26
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
相关资源
最近更新 更多