我正在尝试在查询的 KeyConditions 中使用 ComparisonOperator "IN"
var params = {
TableName: 'xxxxx',
KeyConditions: {
'uuid': {
ComparisonOperator: 'IN', /* required */
AttributeValueList: [
"abc", "def", "ghi"
]
} }
};
var dynamoQueryPromise = dynamoClient.query(params).promise();
...
但我收到错误:
ValidationException:尝试的条件约束不是可索引操作
操作“IN”不可用吗?
任何建议表示赞赏。
****更新*****
我遵循了来自重复问题链接的潜在建议
它建议在 FilterExpression 中使用“IN”操作而不是 KeyConditionExpression
我更新了我的代码:
使用 PK = 'staff' 创建索引 'my-index'
var keyExpr = "#staff = :staff";
var filterExpr = " #phone IN :phone"
var attributeNames = new Object();
attributeNames["#staff"] = 'staff';
attributeNames["#phone"] = 'phone';
var attributeValues = new Object();
attributeValues[":staff"] = 'A1';
attributeValues[":phone"] = ['0012341', '12342134', '214234124'];
var params = {
TableName: 'xxxxxx',
IndexName: 'my-index',
KeyConditionExpression: keyExpr,
FilterExpression: filterExpr,
ExpressionAttributeNames: attributeNames,
ExpressionAttributeValues: attributeValues
}
...
结果:错误
ValidationException:无效的FilterExpression:语法错误;令牌:“:电话”,附近:“IN:电话”