I'm attempting to set up my DynamoDB table so I can query the data via a rest API. My table has a partition key (id) which is a randomly generated ID, a sort key (name) and a List of strings (domain).
I have also set up a global secondary index for the "name" field.
I'm attempting to write a lambda that will search for items using both the name and possible search the domain array also. Is this possible? If so how do I set up the table as I'm currently getting this error:
Query key condition not supported
Here is my Lambda query code:
async function query(tableName, searchTerm) {
return new Promise((resolve, reject) => {
const params = {
IndexName: "nameIndex",
ExpressionAttributeNames: {
"#name": "name",
},
ExpressionAttributeValues: {
":topic": { S: searchTerm },
},
KeyConditionExpression: "begins_with(#name, :topic)",
TableName: tableName,
};
ddb.query(params, (err, data) => {
if (err) {
reject(err);
} else {
console.log("Success", data.Items);
resolve(data.Items);
}
});
});
}