DynamoDB: Оператор сравнения "IN" не работает - PullRequest
0 голосов
/ 06 июня 2018

JavaScript SDK

Я пытаюсь использовать ComparisonOperator "IN" в ключевых условиях моего запроса

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

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

Но я получил ошибку:

ValidationException: Попытка условного ограничения не является индексируемой операцией

не доступна ли операция "IN"?

Любой совет приветствуется.

**** ОБНОВЛЕНИЕ *****

Я последовал потенциальному предложению из дублированного вопроса ссылка

Было предложено использовать операцию «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: телефон"

...