DynamoDB:ComparisonOperator" IN"不起作用

时间:2018-06-06 12:19:39

标签: javascript amazon-web-services amazon-dynamodb aws-sdk aws-sdk-js

JavaScript SDK

我正在尝试使用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:电话"

1 个答案:

答案 0 :(得分:0)

根据发布的信息,无法确定“电话”是否是您的排序键。但是,索引键不支持DynamoDB查询运算符IN。

对于非索引键,请确保正确声明了AttributeNames列表和AttributeValues。

在此处添加链接供您参考:Dynamo DB filter expression using IN operator with numeric array variable