Executing a query against a Global Secondary Index I got this error:
ValidationException: One or more parameter values were invalid: Condition parameter type does not match schema type
Using the NodeJS Document api, my query looked like this:
let params = { "TableName": "exampletable", "IndexName": "example-createdate-index", "KeyConditionExpression": "exampleattr1 = :exampleattr1", "ExpressionAttributeValues": { ":exampleattr1": { "S": "0" } }, "ProjectionExpression": "createdate, exampletext", "ScanIndexForward": false } return docClient.query(params).promise();
The error is saying that one of my query parameter types does not match the values in the schema. I know this value is a String so this looks correct. Following recommendations on this question, it’s suggested to not pass the param type as “S” and let the Document api work out the type itself.Remove the “S” and just passed the value and now it’s working as expected.
I came across the same issue. I was using AWS Console for debugging and found out that if the sort key does not exist for one or more than one record, you will get this error.
The way I worked around is I manually added sort key values for test sake, and it worked. Good way to fix this would be to add proper value of sort key for all rows.