Согласно документации здесь , проблема заключается в том, что ваше ExpressionAttributeValues значение неверно.Вам необходимо предоставить отображение переменной и типа данных со значением.Вам необходимо предоставить сопоставление следующим образом:
let params = {
IndexName : "user_id-index",
ExpressionAttributeValues: {
":v1": {
N: 1234
},
":v2": {
S: "OTHER"
}
},
TableName: table,
KeyConditionExpression: "user_id = :v1 and prod_type = :v2"
};
Вам необходимо указать тип данных в соответствии с документацией. S для строковых литералов, N для чисел и т. Д. Подробности можно найти в документации выше.Я также настоятельно рекомендую использовать ExpressionAttributeNames .Я обнаружил, что он работает лучше, и это лучший опыт с этим SDK.Вам необходимо заменить переменные, которые вы указали в отображении в KeyConditionExpression , примерно так:
let params = {
IndexName : "user_id-index",
ExpressionAttributeValues: {
":v1": {
N: 1234
},
":v2": {
S: "OTHER"
}
},
ExpressionAttributeNames: {
"#userId": "user_id",
"#prodType": "prod_type"
}
TableName: table,
KeyConditionExpression: "#userId = :v1 and #prodType = :v2"
};
Ссылка -
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.KeyConditions.html