AWS DynamoDB - ConditionalCheckFailedException:条件请求失败

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

DynamoDB 表包含 5 行,其中 parkingSpot 是主键。

const params = {
  TableName: "gofore-park",
  Item: {
    parkingSpot: {
      N: parkingSpot,
    },
    VRN: {
      S: vrn,
    },
    startTime: {
      S: startTime,
    },
  },
  ExpressionAttributeValues: {
    ":empty": {
      S: "",
    },
  },
  ConditionExpression: "VRN = :empty",
};

dynamodb.putItem(params, function (err, data) {
  if (err) {
    // an error occurred
    console.log(err);
    callback("parking spot is busy");
  } else {
    // successful response
    callback(null, { message: "car parking info is logged" });
  }
});

我定义了一个 ExpressionAttributeValues,以便在 VRN 字段不为空时尝试 putItem 时引发错误。

首先,有没有更好的方法来定义这个条件?

其次,我正在使用 putItem 测试两个场景:

  1. 当 VRN 字段不为空时更新现有行。
    正如预期的那样,我得到“ConditionalCheckFailedException”。
    enter image description here

  2. 我不明白为什么在尝试使用 parkingSpot>5 创建新条目时会遇到相同的错误。

    enter image description here

我已启用 CloudWatch 来跟踪日志。

aws-lambda amazon-dynamodb conditional-operator
1个回答
0
投票

条件基于服务器端项目,而不是客户端。我希望您对客户端属性进行检查,然后使用代码中的条件(而不是 DynamoDB 请求中的条件)进行检查。

您的条件在这两种情况下都失败是有道理的,因为服务器端项目在这两种情况下都不等于空字符串。

© www.soinside.com 2019 - 2024. All rights reserved.