提供的键元素与架构不匹配-updateItem

时间:2018-10-24 19:24:17

标签: amazon-dynamodb

      var params = {
          ExpressionAttributeNames: {
            "#AT": "date"
          },
          ExpressionAttributeValues: {
            ":t": {
              BOOL: false
            }
          },
          Key: {
            "#AT": {
              N: data.Items[i].date.N
            },
            "accountid": {
              S: data.Items[i].accountid.S
            }
          },
          ReturnValues: "ALL_NEW",
          TableName: "tab",
          UpdateExpression: "SET #AT = :t"
        }
        db.updateItem(params, function (err, data) {
          if (err) console.log(err);
          else {
            //console.log(data);
          }
        });

正在发生的事情是该代码无法正常工作。它给了我这个错误:

  

消息:“提供的关键元素与模式不匹配”​​

这是表格详细信息中的内容:

  

主分区键-日期(数字)

     

主排序键-

1 个答案:

答案 0 :(得分:1)

问题是您的参数中有复合键(日期+帐户ID),但是表仅配置有分区键。

要么使用这个:

  var params = {
    ExpressionAttributeValues: {
      ":t": { BOOL: false }
    },
    ExpressionAttributeNames: {
      "#at": "isRelevant",
    },
    Key: {
      "date": { N: data.Items[i].date.N }
    },
    ReturnValues: "ALL_NEW",
    TableName: "tab",
    UpdateExpression: "SET #at = :t"
  }
  db.updateItem(params, function (err, data) {
    if (err) {
      console.log(err);
    } else {
      //console.log(data);
    }
  });

或者,如果您希望使用accountid作为排序键,则需要重建表。