Bird
Raised Fist0
DynamoDBquery~30 mins

Document client abstraction in DynamoDB - Mini Project: Build & Apply

Choose your learning style10 modes available
Document Client Abstraction with DynamoDB
📖 Scenario: You are building a simple inventory system for a small store. You want to store product information in a DynamoDB table using a document client abstraction to make it easier to work with the data.
🎯 Goal: Create a DynamoDB document client abstraction that allows you to add, retrieve, and update product items in the inventory table.
📋 What You'll Learn
Create a DynamoDB document client instance
Define a table name variable
Write a function to add a product item to the table
Write a function to get a product item by its ID
Write a function to update the quantity of a product item
💡 Why This Matters
🌍 Real World
This abstraction simplifies working with DynamoDB in real applications like inventory management, user profiles, or any document-based data storage.
💼 Career
Understanding how to use DynamoDB DocumentClient and write clean data access functions is valuable for backend developers working with AWS services.
Progress0 / 4 steps
1
Create DynamoDB Document Client and Table Name
Create a variable called docClient that initializes a new DynamoDB DocumentClient instance. Also create a variable called tableName and set it to the string 'Inventory'.
DynamoDB
Hint

Use new AWS.DynamoDB.DocumentClient() to create the document client.

2
Write Function to Add a Product Item
Write an async function called addProduct that takes a parameter product. Inside the function, create a variable params with TableName set to tableName and Item set to product. Use await docClient.put(params).promise() to add the item.
DynamoDB
Hint

Use docClient.put with params and call promise() to await the operation.

3
Write Function to Get a Product by ID
Write an async function called getProductById that takes a parameter productId. Inside the function, create a variable params with TableName set to tableName and Key set to an object with id equal to productId. Use const result = await docClient.get(params).promise() and return result.Item.
DynamoDB
Hint

Use docClient.get with params and return the Item from the result.

4
Write Function to Update Product Quantity
Write an async function called updateProductQuantity that takes parameters productId and newQuantity. Inside the function, create a variable params with TableName set to tableName, Key set to an object with id equal to productId, UpdateExpression set to 'set quantity = :q', ExpressionAttributeValues set to an object with :q equal to newQuantity, and ReturnValues set to 'UPDATED_NEW'. Use await docClient.update(params).promise() to perform the update.
DynamoDB
Hint

Use docClient.update with the correct parameters to update the quantity attribute.

Practice

(1/5)
1. What is the main benefit of using the DynamoDB Document Client abstraction?
easy
A. It requires you to write complex JSON expressions for queries.
B. It allows you to work with plain JavaScript objects without manual data conversion.
C. It only supports string data types in DynamoDB.
D. It disables the use of PutCommand and GetCommand.

Solution

  1. Step 1: Understand Document Client purpose

    The Document Client simplifies interaction by letting you use normal JavaScript objects.
  2. Step 2: Compare options

    The incorrect options describe limitations or incorrect features, while the correct one states the main benefit.
  3. Final Answer:

    It allows you to work with plain JavaScript objects without manual data conversion. -> Option B
  4. Quick Check:

    Document Client simplifies data handling = A [OK]
Hint: Document Client hides data format details, use plain objects [OK]
Common Mistakes:
  • Thinking you must manually convert data formats
  • Believing it only supports strings
  • Confusing commands it supports
2. Which of the following is the correct way to import the DynamoDB Document Client in JavaScript?
easy
A. import DynamoDBDocumentClient from 'aws-sdk';
B. const DynamoDBDocumentClient = require('aws-sdk/lib-dynamodb');
C. import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb";
D. const { DynamoDBDocumentClient } = require('@aws-sdk/client-dynamodb');

Solution

  1. Step 1: Identify correct import syntax

    The Document Client is imported from "@aws-sdk/lib-dynamodb" using ES module syntax.
  2. Step 2: Eliminate incorrect options

    The CommonJS require uses the wrong path; importing from 'aws-sdk' uses the wrong package; destructuring from '@aws-sdk/client-dynamodb' uses the wrong package.
  3. Final Answer:

    import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb"; -> Option C
  4. Quick Check:

    Correct ES module import from lib-dynamodb = A [OK]
Hint: Use ES module import from '@aws-sdk/lib-dynamodb' [OK]
Common Mistakes:
  • Importing from '@aws-sdk/client-dynamodb' instead
  • Using require with wrong package
  • Missing curly braces in import
3. Given the following code snippet using DynamoDB Document Client, what will be the output if the item exists?
const params = { TableName: "Users", Key: { userId: "123" } };
const command = new GetCommand(params);
const data = await docClient.send(command);
console.log(data.Item);
medium
A. An object representing the user with userId '123', e.g., { userId: '123', name: 'Alice' }
B. A string containing the userId '123'
C. An error because GetCommand is not supported by Document Client
D. Undefined, because data.Item is not returned

Solution

  1. Step 1: Understand GetCommand with Document Client

    GetCommand returns an object with an Item property containing the requested item if it exists.
  2. Step 2: Analyze console.log output

    Logging data.Item prints the full object stored for userId '123', not just a string or undefined.
  3. Final Answer:

    An object representing the user with userId '123', e.g., { userId: '123', name: 'Alice' } -> Option A
  4. Quick Check:

    GetCommand returns item object = B [OK]
Hint: GetCommand returns full item object in data.Item [OK]
Common Mistakes:
  • Expecting only the key value as output
  • Thinking GetCommand is unsupported
  • Assuming data.Item is undefined
4. Identify the error in this DynamoDB Document Client code snippet:
const params = { TableName: "Products", Item: { id: 101, name: "Pen" } };
const command = new GetCommand(params);
const result = await docClient.send(command);
console.log(result);
medium
A. Using GetCommand with an Item parameter instead of Key
B. Missing await keyword before docClient.send
C. TableName should be lowercase
D. Item should be a string, not an object

Solution

  1. Step 1: Check command and parameters

    GetCommand requires a Key parameter to identify the item, not an Item parameter.
  2. Step 2: Validate other options

    Await is present, TableName is case-sensitive but correct, and Item must be an object for PutCommand, not GetCommand.
  3. Final Answer:

    Using GetCommand with an Item parameter instead of Key -> Option A
  4. Quick Check:

    GetCommand needs Key, not Item = D [OK]
Hint: GetCommand uses Key, PutCommand uses Item [OK]
Common Mistakes:
  • Confusing Item and Key parameters
  • Ignoring case sensitivity of TableName
  • Forgetting await keyword
5. You want to add a new user to the DynamoDB table 'Users' using the Document Client. Which code snippet correctly performs this operation?
hard
A. const params = { TableName: 'Users', Key: { userId: 'u123' }, Item: { name: 'Bob' } }; const command = new PutCommand(params); await docClient.send(command);
B. const params = { TableName: 'Users', Key: { userId: 'u123' } }; const command = new PutCommand(params); await docClient.send(command);
C. const params = { TableName: 'Users', Item: { userId: 'u123' } }; const command = new GetCommand(params); await docClient.send(command);
D. const params = { TableName: 'Users', Item: { userId: 'u123', name: 'Bob' } }; const command = new PutCommand(params); await docClient.send(command);

Solution

  1. Step 1: Understand PutCommand parameters

    PutCommand requires an Item parameter with the full object to insert, including the key attributes.
  2. Step 2: Analyze each option

    Using both Key and Item is incorrect; using only Key omits the Item; using GetCommand retrieves instead of inserts; the correct snippet uses Item containing both key and attributes.
  3. Final Answer:

    const params = { TableName: 'Users', Item: { userId: 'u123', name: 'Bob' } }; const command = new PutCommand(params); await docClient.send(command); -> Option D
  4. Quick Check:

    PutCommand with Item including key = C [OK]
Hint: PutCommand needs full Item object including keys [OK]
Common Mistakes:
  • Using Key instead of Item for PutCommand
  • Mixing GetCommand with PutCommand parameters
  • Omitting key attributes in Item
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard