Hi Alex,

I've purchased the Premium package and could not find the source code of the examples you discusss in the videos.

Where can I find the full source code of Nodjes and Python?
Hi  Rob ! The source code will be available from Gumroad in a zip file. Please let me know if you still have trouble finding it.

Note that I only have examples for Node.js at this time. Been wanting to do Python as well but haven't yet. :) 

I am using dynamodb-toolbox to deal with DynamoDB. Following is how my item looks like:

  id: "4lj4ljldsfl",
  name: "XYZ",
  audio_profile: {
    volume: "medium",
    pitch: "high"
    color: "#2D79F6",
    text_color: "#3D4852"


How do I define the audio_profile and player_settings field in the schema.
I read the document again. It looks like dynamodb-toolbox does not support this currently.
I’m curious, do you use a library when accessing DynamoDB?

What library do you use, and how did you settle on it?

(I mostly just the use the DocumentClient, but have often considered delving in to the available libraries.)
I'm a DocumentClient fan, but the dynamodb-toolbox is on my list to try.
Emanuele Ricci replied
  ·  1 reply
At the moment I just finished reading the book. I'm going to start modeling a test DB for my app on the weekend but at the moment I would like to stay as simple as possible so I will give a try to dynamodb-toolbox.

It's a pity that even the 0.2v is still not supporting Typescript AFIK.
I wrote a helper library to make working with dynamodb more succinct using typescript. I wanted to make something that when used was obvious what the code did and removed anything distracting, like while loops. Its not easy to share, but the result is doing things like this for a migration to add a key:

return pipeline(config.TableName)
    .withKeys("id", "sort")
    .forEach((item, pipeline) => 
      item.assigneeId !== "!!!" &&
        pipeline.update(item.id, item.sort, {
            gsi2pk: item.claimId,
            gsi2sk: item.status + "#" + item.receivedDate
    .then(pipeline =>
      pipeline.handleUnprocessed(unprocessed =>

the 'scanIndex' is an async iterator in this example fetching 200 items at once, then yielding one item at a time to the custom 'forEach' function, whose return values are batched and awaited before continuing the iterator. I've also got functions like 'map', and update methods like 'update' above.

Still not as easy to read as a SQL statement, but a lot better.

It could help a lot writing your own helper tools, at a minimum it will teach you the methods available in the sdk for your language of choice.

Ken Snyder replied
  ·  2 replies