2014-02-26 79 views
3

我想从特定主键值的Node.js访问Amazon数据服务器的数据。该数据是可用的形式:如何从node.js访问dynamo数据库

{ 
    "Count": 9862, 
    "Items": [ 
    { 
     "Admin": { 
     "S": "false" 
     }, 
     "UserId": { 
     "S": "e9633477-978e-4956-ab34-cc4b8bbe4adf" 
     }, 
     "Age": { 
     "N": "76.24807963806055" 
     }, 
     "Promoted": { 
     "S": "true" 
     }, 
     "UserName": { 
     "S": "e9633477" 
     }, 
     "Registered": { 
     "S": "true" 
     } 
    }, 
    { 
     "Admin": { 
     "S": "false" 
     }, 
     "UserId": { 
     "S": "acf3eff7-36d6-4c3f-81dd-76f3a8071bcf" 
     }, 
     "Age": { 
     "N": "64.79224276370684" 
     }, 
     "Promoted": { 
     "S": "true" 
     }, 
     "UserName": { 
     "S": "acf3eff7" 
     }, 
     "Registered": { 
     "S": "true" 
     } 
    }, 

每次当我制作的代码请求:

app.get('/Mydetails/:tablename/:id', function(req, res){ 
console.log('Table is ' + req.params.tablename); 


var element = {TableName: req.params.tablename, Key:{UserID:{"S": '"'+req.params.id+'"' }}}; 
console.log('Id is "' + req.params.id + '"'); 
dynamodb.getItem(element, function(err, data){ 
    if(err){ 
     console.log('Error occurred: '+err); 
    }else{ 
    console.log('succeed'); 
     res.json(data); 
    } 
}); 

那么它提供了以下错误:

**ValidationException: The provided key element does not match the schema.** 

不过我曾尝试这也是 -

var element = {TableName: req.params.tablename, Key:{UserId:{"S": +req.params.id}}}; 

任何想法?任何帮助将不胜感激。

+0

你为什么在这里使用+号+ req.params.id?这会将id更改为一个数字(在第二种情况下),您的模式显示userId是一个字符串。 –

回答

0

看来你发送的变量名为params,我不知道你在哪里填充它。在你的用户ID(用户ID VS)dynamodb.getItem(元素,回调)

+0

是的,我已经使用dynamodb.getItem(元素,函数(err,数据)这一行以及但没有任何反应,意味着相同的结果。 – coolhimanshu

0

貌似有一个错字(大小写不同):

你应该发送元素。 - 大写D. 试试这个改变。

+0

我试过这个但没有成功.. :( – coolhimanshu

1

你,如果它存在也通过一系列关键在“解释”,对参数

例如 应该

Key:{'thePrimaryKey':{ "S": 'primaryKey' }, 'theRangeKey': {'S': 'rangeKey'} } 

希望这有助于!

相关问题