【问题标题】:How to access dynamo db from node.js如何从 node.js 访问 dynamodb
【发布时间】:2014-03-02 15:01:25
【问题描述】:

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

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

有什么想法吗?任何帮助将不胜感激。

【问题讨论】:

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

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


【解决方案1】:

如果范围键存在于“键”中,您还必须传递参数

示例 应该是

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您似乎正在发送一个名为 params 的变量,我看不到您在哪里填充它。

    您应该发送 elementdynamodb.getItem(element, callback)

    【讨论】:

    • 是的,我也使用了 dynamodb.getItem(element, function(err, data) 这一行,但没有任何反应,意味着相同的结果。
    【解决方案3】:

    您的用户 ID(相对于用户 ID)中似乎存在拼写错误(大小写差异)。 - 大写 D。 试试这个改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      相关资源
      最近更新 更多