【发布时间】:2018-06-06 12:19:39
【问题描述】:
我正在尝试在我的查询的 KeyConditions 中使用 ComparisonOperator "IN"
var params = {
TableName: 'xxxxx',
KeyConditions: {
'uuid': {
ComparisonOperator: 'IN', /* required */
AttributeValueList: [
"abc", "def", "ghi"
]
} }
};
var dynamoQueryPromise = dynamoClient.query(params).promise();
...
但我收到错误:
ValidationException:尝试的条件约束不是 可索引操作
“IN”操作不可用吗?
感谢任何建议。
****更新*****
我遵循了来自重复问题link的潜在建议
建议在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:语法错误;令牌: ":phone", 附近: "IN:phone"
【问题讨论】:
-
我看了帖子,建议在FilterExpression中使用“IN”,我试过了,“IN”还是不行。 AWS SDK 文档未更新且信息不正确,因此很沮丧...
-
不,上面写着IN isn't supported.
-
嗨 Liam,感谢您的了解,那么有什么方法可以使用“IN”过滤 DynamoDB 查询吗?或亚马逊从其 SDK 中删除了此操作
-
不确定,不是我所在的地区,恐怕我刚刚看到了副本。如果您想问这个问题,我建议您编辑您的问题并包含指向潜在重复项的链接
标签: javascript amazon-web-services amazon-dynamodb aws-sdk aws-sdk-js