我正在尝试使用ComparisonOperator" IN"在我的查询的KeyConditions
var params = {
TableName: 'xxxxx',
KeyConditions: {
'uuid': {
ComparisonOperator: 'IN', /* required */
AttributeValueList: [
"abc", "def", "ghi"
]
} }
};
var dynamoQueryPromise = dynamoClient.query(params).promise();
...
但我收到了错误:
ValidationException:尝试条件约束不是 可转位操作
操作" IN"无法使用?
感谢任何建议。
**** ***** UPDATE
我遵循了重复问题link
的潜在建议建议使用" IN" FilterExpression中的操作而不是KeyConditionExpression
我更新了我的代码:
创建索引' my-index' PK =' staff'
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:电话"
答案 0 :(得分:0)
根据发布的信息,无法确定“电话”是否是您的排序键。但是,索引键不支持DynamoDB查询运算符IN。
对于非索引键,请确保正确声明了AttributeNames列表和AttributeValues。
在此处添加链接供您参考:Dynamo DB filter expression using IN operator with numeric array variable