Misc.

AWS Dynamodb using Nodejs

In this article, you will know how you can perform different DynamoDB operations with Node Js. I am going to use aws-sdk for this article. So lets start…!

Firstly, we will need to setup node js application, that’s very easy and can be done following commands.

cd app_dir/
npm init
npm install aws-sdk --save

Or you can use yarn commands.

By init command, package.json file will be setup and by install command, aws-sdk will be installed and added in package.json file.

Now we can start coding. I supposed that you have any table in AWS DynamoDB.

Get Item:

To get item, we can use Partition key and/or Sort key. Following is the code for get item.

const AWS = require("aws-sdk")
AWS.config.update({ region: "us-east-1" })
const dynamoDB = new AWS.DynamoDB.DocumentClient()
dynamoDB
  .get({
    TableName: "table-name",
    Key: {
      id: "anyid123", // id is the Partition Key, 'anyid123' is the value of it
    },
  })
  .promise()
  .then(data => console.log(data.Item))
  .catch(console.error)

Put Item (Write/update):

Put operation will add new item or replace if key already exists in table. Following is the code for put operation.

const AWS = require("aws-sdk")
const dynamoDB = new AWS.DynamoDB.DocumentClient({ region: "us-east-1" })
dynamoDB
  .put({
    Item: {
      id: "anyid1245",
      name: "John Doe",
      email: "john@example.com",
    },
    TableName: "table-name",
  })
  .promise()
  .then(data => console.log(data.Attributes))
  .catch(console.error)

Update Item:

This operation consists of two parts. First get item by key, second update selected item with update expression. Following code will describe this clearly.

const AWS = require("aws-sdk")
AWS.config.update({ region: "us-east-1" })
const dynamoDB = new AWS.DynamoDB.DocumentClient()

dynamoDB
  .update({
    TableName: "table-name",
    Key: {
      id: "anyid234234",
    },
    UpdateExpression: `set firstName = :firstName`,
    ExpressionAttributeValues: {
      ":firstName": "update name",
    },
  })
  .promise()
  .then(data => console.log(data.Attributes))
  .catch(console.error)

We can also add condition expression by using ConditionExpression which has similar syntax as  FilerExpression. Just add following expression in above code.

ConditionExpression: `attribute_not_exists(deletedAt),

Query operation:

If we want to get multiple records which share same partition key, then we can use Query operation. We can also use operators for Sort keys. Following is the code for reference.

const AWS = require('aws-sdk');
const dynamoDB = new AWS.DynamoDB.DocumentClient({region:'us-east-1'});

dynamoDB
  .query({
    TableName: 'table-name',
    KeyConditionExpression: 'id = :hashKey and date > :rangeKey'
    ExpressionAttributeValues: {
      ':hashKey': '2344',
      ':rangeKey': 20210511
    }
  })
  .promise()
  .then(data => console.log(data.Items))
  .catch(console.error);

These are the some of operations, you can find more details in these documentation. Hope this will help.

websourceblog

ReactJs, NodeJs, Amazon Web Services, Symfony, Laravel, CodeIgniter, Zend Framework, WordPress, Drupal, Magento, Angular

Recent Posts

How to install and configure Apache2 on WSL2?

I hope you already have WSL2 installed and enabled. So, setting up Apache2 on WSL2…

4 months ago

How to install NVM on Windows?

Install NVM on Windows Node Js is a JavaScript runtime environment used widely in today’s…

5 months ago

How to reset WSL 2 user’s password?

You can easily reset WSL 2 users' password, by just following the following steps. Open…

9 months ago

DreamHost Web Hosting

DreamHost a web hosting company, founded in 1997. It is offering sort of hosting services,…

1 year ago

How to add submenu or menu in any specific menu option in WordPress programmatically?

Menus in WordPress are highly versatile and can be easily modified to change in your…

2 years ago

Laravel 8 error target class controller does not exist.

Laravel is famous and robust PHP framework, widely used in different type of projects. While…

2 years ago