Only recent messages are now shown and the most recent messages will be sorted on top! Also, you can leave your pseudonym as author and the posts have a visible timestamp.
Check it out here: https://nickvanhoof.com/a-lambda-guestbook
A few weeks ago I created a guestbook linked to this website which uses AWS lambda’s and DynamoDB in the backend. You can read all about it here. As described above I now updated it.
What I changed
The lambda has to be able to query messages with a certain timestamp and sort them by date. In order to achieve this I had to restructure the database’s structure. I changed the unique-id (partition-key and sort-key) and added a GSI (global secondary index). With the table structure changed I am able to query the database from the query-lambda in a different way. In the parameters of the query I can now use the index and then create a KeyConditionExpression on this index.
The code that specifies the query parameters looks something like this:
let params = { TableName : "guestbook", IndexName: "YearMonthAttribute-Date-index", KeyConditionExpression: "YearMonthAttribute = :YMAttribute and #Dt > :date", ExpressionAttributeNames:{ "#Dt": "Date" }, ExpressionAttributeValues: { ":YMAttribute": currentYearMonthAttribute, ":date": dateInMilliseconds }, ProjectionExpression: "Author, Message, #Dt", ScanIndexForward: false }; docClient.query(params, function(err, data) { if (err) { callback("Unable to query. Error: " + JSON.stringify(err, null, 2), null); } else { let numberOfResultsReturned = data.Count; console.log(`Query succeeded. Returned ${numberOfResultsReturned} results.`); callback(null, data); } });
Code available on GitHub: https://github.com/Nxtra/Guestbook
One thought on “A lambda guestbook – Update”