如何从node.js访问dynamo db

时间:2014-02-26 11:20:27

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

我想从Node.js访问特定主键值的Amazon Data Server数据。数据以以下形式提供:

{
  "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}}};

任何想法?任何帮助都会得到赞赏。

3 个答案:

答案 0 :(得分:1)

对于参数

,您还必须传递范围键(如果它存在于'Key'中)

示例 它应该是

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

希望这有帮助!

答案 1 :(得分:0)

您似乎发送了一个名为 params 的变量,我看不到您填充它的位置。

您应该发送元素 dynamodb.getItem(元素,回调)

答案 2 :(得分:0)

您的UserID(与UserId相比)看起来有拼写错误(大小写差异)。 - 大写字母D. 试试这个改变。