无法更新仅具有分区键的dynamoDB表的项目

问题描述 投票:0回答:1

目标是更新DynamoDB表中的属性之一。这是模式:

{
  'job_id': {S: jobInfo.job_id} (partition_key),
  'company': {S: jobInfo.company},
  'title': {S: jobInfo.title},
  'posted_on': {S: jobInfo.posted_on},
  'clicks': {N: jobInfo.clicks}

}
该表的

主键仅是partition_key,并且是job_id。现在我想增加clicks值,这是我的update param

  let params = {
    TableName: 'jobPosts',
    Key: {
        "job_id": "57a08a5c-ca6c-4056-b892-dc9e6388adb9"
    },
    UpdateExpression: "add clicks :value",
    ExpressionAttributeValues: {
        ":value": {N: "1"}
    },
    ReturnValues:"ALL_NEW"
  };

  ddb.updateItem(params, function(err, data) {
    if (err) {
      console.log("In DynamoDB error");
      console.log(`Error: ${err}`);
    } else {
      console.log("In DynamoDB Success");
      console.log(`Here is the data: ${data}`);
    }
  });
};

但是,我收到ValidationException错误,并显示消息提供的键元素与架构不匹配。这是完整的堆栈跟踪:

{
    "message": "The provided key element does not match the schema",
    "code": "ValidationException",
    "time": "2019-11-17T04:23:11.495Z",
    "requestId": "4327RBE0UEHSND9Q4M7K44AEEFVV4KQNSO5AEMVJF66Q9ASUAAJG",
    "statusCode": 400,
    "retryable": false,
    "retryDelay": 37.586092348332265
}

没有复合主键。它只是partition_key。我不明白这里的问题。

amazon-web-services nosql amazon-dynamodb dynamodb-queries amazon-dynamodb-streams
1个回答
0
投票
指定密钥时,请使用如下格式:

Key={'job_id': {'S': "57a08a5c-ca6c-4056-b892-dc9e6388adb9"}}

这很令人困惑,但是在指定密钥时,您不仅必须指定作为密钥的字段,还必须指定密钥的类型。因此,在这种情况下,job_id的“值”是一个类型/值对,其中“ S”表示这是一个字符串类型,其中“ 57a08a5c-ca6c-4056-b892-dc9e6388adb9”是该字符串的值。这显示了不同类型的格式:https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html
© www.soinside.com 2019 - 2024. All rights reserved.