1

JavaScript SDK

クエリの KeyConditions で ComparisonOperator "IN" を使用しようとしています

var params = {
            TableName: 'xxxxx',
            KeyConditions: {
                'uuid': {
                  ComparisonOperator: 'IN',  /* required */
                  AttributeValueList: [
                    "abc", "def", "ghi" 
                  ]
                }              }

        };
var dynamoQueryPromise = dynamoClient.query(params).promise();
...

しかし、私はエラーを受け取りました:

ValidationException: 試行された条件付き制約はインデックス可能な操作ではありません

操作「IN」は使用できませんか?

アドバイスをいただければ幸いです。

****アップデート*****

重複した質問リンクからの潜在的な提案に従いました

KeyConditionExpressionではなくFilterExpressionで「IN」操作を使用することを提案しました

コードを更新しました:

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"、near: "IN:phone"

4

1 に答える 1