DynamoDB using Node.js and AWS SDK v3 using DocumentClient.

Meta Description: Learn how to connect to Amazon DynamoDB using Node.js, the AWS SDK v3, DocumentClient, and Command Classes. Boost your app’s performance with this efficient approach to CRUD operations.

Article:

In this tutorial, we’ll demonstrate how to connect to Amazon DynamoDB using Node.js, the AWS SDK v3, DocumentClient, and Command Classes for efficient CRUD operations. By leveraging these tools and techniques, you can improve your application’s performance and simplify your code.

Prerequisites:

  • Node.js installed on your machine
  • An AWS account with access to DynamoDB
  • AWS CLI installed and configured with appropriate credentials

Step 1: Set up the project

First, create a new folder for your project and navigate to it in the terminal. Initialize a new Node.js project by running:

npm init -y

Step 2: Install dependencies

Next, install the necessary dependencies:

npm install @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb

Step 3: Configure the DynamoDB client

Create a new file named dynamodb.js and import the necessary modules:

const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");
const { DynamoDBDocumentClient, GetCommand, PutCommand, UpdateCommand, DeleteCommand } = require("@aws-sdk/lib-dynamodb");

// Configure the DynamoDB client
const dynamoDBClient = new DynamoDBClient({
    region: "us-west-2", // Update with your desired region
    // You can optionally add your credentials here
    // accessKeyId: "your-access-key-id",
    // secretAccessKey: "your-secret-access-key",
});

// Create an instance of the DocumentClient
const documentClient = new DynamoDBDocumentClient({ client: dynamoDBClient });

module.exports = { documentClient, GetCommand, PutCommand, UpdateCommand, DeleteCommand };

Step 4: Perform CRUD operations

Create a new file named operations.js and import the required modules:

const { documentClient, GetCommand, PutCommand, UpdateCommand, DeleteCommand } = require("./dynamodb");

// Replace 'YourTableName' with the name of your DynamoDB table
const TableName = "YourTableName";

Create an item

async function createItem(item) {
    const params = {
        TableName,
        Item: item,
    };

    try {
        await documentClient.send(new PutCommand(params));
        console.log("Item created:", item);
    } catch (error) {
        console.error("Error creating item:", error);
    }
}

Retrieve an item

async function getItem(key) {
    const params = {
        TableName,
        Key: key,
    };

    try {
        const response = await documentClient.send(new GetCommand(params));
        console.log("Item retrieved:", response.Item);
    } catch (error) {
        console.error("Error retrieving item:", error);
    }
}

Update an item

async function updateItem(key, updateExpression, expressionAttributeValues) {
    const params = {
        TableName,
        Key: key,
        UpdateExpression: updateExpression,
        ExpressionAttributeValues: expressionAttributeValues,
        ReturnValues: "UPDATED_NEW",
    };

    try {
        const response = await documentClient.send(new UpdateCommand(params));
        console.log("Item updated:", response.Attributes);
    } catch (error) {
        console.error("Error updating item:", error);
    }
}

Delete an item

async function deleteItem(key) {
    const params = {
        TableName,
        Key: key,
    };

    try {
        await documentClient.send(new DeleteCommand(params));
        console.log("Item deleted:", key);
    } catch (error) {
        console.error("Error deleting item:", error);
    }
}

Step 5: Test CRUD operations

Now, you can test the CRUD operations in a new file named index.js. Import the required functions and run the tests:

const { createItem, getItem, updateItem, deleteItem } = require("./operations");

(async () => {
    // Test createItem
    const newItem = {
        id: "1",
        name: "Sample Item",
        price: 25.99,
    };
    await createItem(newItem);

    // Test getItem
    const key = { id: "1" };
    await getItem(key);

    // Test updateItem
    const updateExpression = "SET price = :newPrice";
    const expressionAttributeValues = {
        ":newPrice": 27.99,
    };
    await updateItem(key, updateExpression, expressionAttributeValues);

    // Test deleteItem
    await deleteItem(key);
})();

Run the index.js file to test the CRUD operations:

node index.js

Conclusion:

In this tutorial, we learned how to connect to DynamoDB using Node.js and the AWS SDK v3 DocumentClient. We also demonstrated how to perform basic CRUD operations on a DynamoDB table. With this knowledge, you can now build and manage DynamoDB-backed applications using the AWS SDK v3 in Node.js.