I'm new to Dynamo and have been trying to query the DB for a range.
I'm doing a query for an ISO date string in my Lambda like this:
const start = event['queryStringParameters']['startDate'];
const end = event['queryStringParameters']['endDate'];
let params = {
TableName: "Parcel",
KeyConditionExpression: "#trackNo = :trackNo AND #ShipmentDate BETWEEN :start AND :end",
ExpressionAttributeNames: {
"#trackNo": "TrackingNumber",
"#ShipmentDate": "ShipmentDate"
},
ExpressionAttributeValues: {
":trackNo": "TrackingNumber",
":start": start,
":end": end
}
but I am not getting any records in the range...
I've searched this for hours... I cannot figure out how to perform this query.
Example Data:
{
"Carrier": "FedEx",
"ShipmentDate": "2019-09-02",
"TrackingNumber": "TN_2019-09-02"
}
Functioning scan paradigm:
let params = {
TableName: "Parcel",
FilterExpression: "#ShipmentDate BETWEEN :start AND :end",
ExpressionAttributeNames: {
"#ShipmentDate": "ShipmentDate"
},
ExpressionAttributeValues: {
":start": start,
":end": end
}
};
try {
const data = await documentClient.scan(params).promise();
responseBody = JSON.stringify(data);
statusCode = 200;
} catch (err) {
responseBody = `Unable to get shipments: ${err}`
statusCode = 403;
}