为什么我会收到条件与架构不匹配的错误消息?
Why am I getting an error that my conditions don't match the schema?
我的查询有效:
{
"TableName": "myTable",
"IndexName": "gsi1",
"Limit": 12,
"KeyConditionExpression": "#pk = :pk",
"ExpressionAttributeValues": {
":pk": "TOS"
},
"ExpressionAttributeNames": {
"#pk": "gsi1_pk"
}
}
我尝试使用 KeyConditions
而不是表达式将其转换为一个,因为这使其他事情变得更容易。所以我把它改成这样:
{
"TableName": "myTable",
"IndexName": "gsi1",
"Limit": 12,
"KeyConditions": {
"gsi1_pk": {
"ComparisonOperator": "EQ",
"AttributeValueList": [
{
"S": "TOS"
}
]
}
}
}
我在 table 上配置了 GSI:
但是当我发出请求时出现了这个错误:
ValidationException: One or more parameter values were invalid: Condition parameter type does not match schema type
我不明白为什么会出现此错误。
- 这个 GSI 的分区键是一个字符串
- 我查询的唯一属性是一个字符串
- 名称
gsi1_pk
与我查询的值匹配
我在转换这个查询时是否遗漏了什么?我不明白我应该更改什么来解决错误,因为它看起来很准确。
来自这个 aws doc
This is a legacy parameter. Use KeyConditionExpression instead.
'KeyConditions' >= 'KeyConditionExpression'
更改查询中的密钥变量应该可以解决此问题。
我的查询有效:
{
"TableName": "myTable",
"IndexName": "gsi1",
"Limit": 12,
"KeyConditionExpression": "#pk = :pk",
"ExpressionAttributeValues": {
":pk": "TOS"
},
"ExpressionAttributeNames": {
"#pk": "gsi1_pk"
}
}
我尝试使用 KeyConditions
而不是表达式将其转换为一个,因为这使其他事情变得更容易。所以我把它改成这样:
{
"TableName": "myTable",
"IndexName": "gsi1",
"Limit": 12,
"KeyConditions": {
"gsi1_pk": {
"ComparisonOperator": "EQ",
"AttributeValueList": [
{
"S": "TOS"
}
]
}
}
}
我在 table 上配置了 GSI:
但是当我发出请求时出现了这个错误:
ValidationException: One or more parameter values were invalid: Condition parameter type does not match schema type
我不明白为什么会出现此错误。
- 这个 GSI 的分区键是一个字符串
- 我查询的唯一属性是一个字符串
- 名称
gsi1_pk
与我查询的值匹配
我在转换这个查询时是否遗漏了什么?我不明白我应该更改什么来解决错误,因为它看起来很准确。
来自这个 aws doc
This is a legacy parameter. Use KeyConditionExpression instead.
'KeyConditions' >= 'KeyConditionExpression'
更改查询中的密钥变量应该可以解决此问题。