使用Lambda从Dynamo获取的数据为空

时间:2017-07-18 10:17:39

标签: lambda amazon-dynamodb aws-lambda

我正在尝试使用Lambda从DynamoDB获取数据但不知何故数据变空。请参阅下面的lambda代码。

dynamodb.getItem(params, function(err, data) {
                if (err) {
                    console.log(err);
                    callback(err);
                } else {
                    console.log(data);
                    callback(null, [{Name: +dataField.Name.S, Birthdate: 
+dataField.Birthdate.N, Phone: +dataField.Phone.N, Address: 
+dataField.Address.S, Role: +dataField.Role.S}]);    
                }
            });


OUTPUT:
[
{
"Name" : ,
"Birthdate" : ,
"Phone" : ,
"Address" : ,
"Role" : 
} 
]

2 个答案:

答案 0 :(得分:0)

请将您首先引用的代码更改为回调数据并查看data.Item为getItem返回Item中的项目(如果您的参数是正确的,并且肯定是一个对象传递给您的参数):

 dynamodb.getItem(params, function(err, data) {
                if (err) {
                    console.log(err);
                    callback(err);
                } else {
                    console.log(data);

                    let dataField = data.Item;

                    callback(null, [{Name: +dataField.Name.S, Birthdate: 
+dataField.Birthdate.N, Phone: +dataField.Phone.N, Address: 
+dataField.Address.S, Role: +dataField.Role.S}]);    
                }
            });

答案 1 :(得分:0)

请删除在每个字符串值之前加前缀的“ +”号。

代替这个:(不要这样做)

for(int length = input.length()-1; length >= 0; length--)

执行以下操作:

callback(null, [{                                                           
    Name: +dataField.Name.S,                                                   
    Birthdate: +dataField.Birthdate.N,                                         
    Phone: +dataField.Phone.N,                                                 
    Address: +dataField.Address.S,                                             
    Role: +dataField.Role.S                                                    
}]);