Skip to content
Advertisement

What is the proper syntax to get() entries where the sort key begins with a substring using AWS.DynamoDB.DocumentClient in NodeJS?

What is the proper syntax to query database entries whose sort key starts with a specific string?

I believe it’s something along the lines of

const query_params = { 
 TableName: 'my_table',
   Key: {
      my_primary_key: 'a_primary_key_value',
   },
   FilterExpression: "my_sort_key begins_with :string",
   ExpressionAttributeValues: { 
     ":string": "starts_with_substring" 
   }
};

Followed by a dynamoDb.get(query_params, ..., but that is not quite right. I am getting an ValidationException: The provided key element does not match the schema error.

Advertisement

Answer

According to the SDK query documentation, your query params should look like this

{
    TableName: "my-table",
    KeyConditionExpression: "#pk= :pk And begins_with(#sk, :sk)",
    ExpressionAttributeValues: {
      ":pk": "a_primary_key_value",
      ":sk": "starts_with_substring"
    },
    ExpressionAttributeNames: {
      "#pk": "my_primary_key",
      "#sk": "my_sort_key"
    }
}

You’ll also need to change dynamoDb.get() to dynamoDb.query().

Advertisement