为什么AWS Dynamodb SDK getItem方法多次执行我的回调函数?

时间:2013-06-26 21:59:47

标签: node.js amazon-web-services amazon-dynamodb

我有以下代码使用AWS SDK for Node命中DynamoDB:

var aws = require('./aws')

...

var key = "fookey";

aws.dynamo.getItem({
    "TableName": "TableFoo",
    "Key": {
        "FooKey": {
            "S": key
        }
    }
}, function(error, data) {
    if(err != null) {
        callback(500);
    }
    else if(data.Item != null) {
        var obj = { values: [] };
        callback(null, obj);
    }
    else {
        callback(null, data.Item.values.S);
    }
});

正在发生的是呼叫成功执行并返回预期结果。但是 - 然后 - 第二次执行回调函数,并将错误对象设置为:

{ [SyntaxError: Unexpected token o] statusCode: 200, retryable: false }

知道为什么会这样吗?这是最新版本的AWS SDK for Node。

TIA。

2 个答案:

答案 0 :(得分:1)

有趣的是,当您从单元测试中调用此代码并且该测试中的断言失败时,会发生这种情况。我打算和亚马逊谈谈这件事。

答案 1 :(得分:1)

我认为你在第一个if条件表达式拼错了错误变量。你写了错误而不是错误。

function(error, data) {
    if(err != null) {    <-- // err should be error
        callback(500);
    }