Amazon dynamodb 提供的键元素与schema-updateItem不匹配

Amazon dynamodb 提供的键元素与schema-updateItem不匹配,amazon-dynamodb,Amazon Dynamodb,发生的事情是代码不起作用。它给了我这个错误: 消息:“提供的键元素与架构不匹配” 这是表格详细信息中的内容: 主分区键-日期(编号) 主排序键- 问题是您的参数中有一个复合键(date+accountid),但您的表只配置了一个分区键 使用以下选项之一: var params = { ExpressionAttributeNames: { "#AT": "date" },

发生的事情是代码不起作用。它给了我这个错误:

消息:“提供的键元素与架构不匹配”

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

主分区键-日期(编号)

主排序键-


问题是您的参数中有一个复合键(date+accountid),但您的表只配置了一个分区键

使用以下选项之一:

      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);
          }
        });

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

n.b.我还从中更正了属性名称-因为我识别了参数。这意味着data.Items没有定义为使用参数的数组。
  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);
    }
  });