Skip to main content

Using mmDynamo Javascript SDK

Browser(Javascript) NPM

  • Install mmdynamo

    npm install mmdynamo --save
  • Import package

    import { DynamoDB } from "mmdynamo";
  • Initialize Dynamodb

    import { DynamoDB } from "mmdynamo";

    const dcName = "test.macrometa.io";
    const host = "https://api-" + dcName;
    const apiKey = "xxxxxxxxxxxxxxxxxxxxxx";
    /*
    If you have a JWT token

    const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
    */

    const service = "dynamodb";
    const region = "us-east-1";
    const endpoint = host + "/_api/dynamo";
    // secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
    const secretAccessKey = "c8";
    const accessKeyId = "apikey " + apiKey;
    /*
    If you are using JWT token use the below instead

    const accessKeyId = "bearer " + JWT;
    */

    const client = new DynamoDB({
    region,
    endpoint,
    accessKeyId,
    secretAccessKey,
    });

Browser(Javascript) as Library

  • Add mmdynamo

    <script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>
  • Initialize Dynamodb with Macrometa DynamoMode

    <script type="text/javascript">
    const dcName = "play.paas.macrometa.io";
    const host = "https://api-" + dcName;
    const apiKey = "<your-api-key>";
    /*
    If you have a JWT token

    const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
    */

    const service = "dynamodb";
    const region = "us-east-1";
    const endpoint = host + "/_api/dynamo";
    // secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
    const secretAccessKey = "c8";
    const accessKeyId = "apikey " + apiKey;

    /*
    If you are using JWT token use the below instead

    const accessKeyId = "bearer " + JWT;
    */
    const { DynamoDB } = window.mmdynamo;

    const client = new DynamoDB({
    region,
    endpoint,
    accessKeyId,
    secretAccessKey,
    });
    </script>

Create a Table


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "play.paas.macrometa.io";
const host = "https://api-" + dcName;
const apiKey = "<your-api-key>";
/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;
/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});

function createMovies() {
var params = {
TableName: "Movies",
KeySchema: [
{ AttributeName: "year", KeyType: "HASH" },
{ AttributeName: "title", KeyType: "RANGE" },
],
AttributeDefinitions: [
{ AttributeName: "year", AttributeType: "N" },
{ AttributeName: "title", AttributeType: "S" },
],
ProvisionedThroughput: {
ReadCapacityUnits: 5,
WriteCapacityUnits: 5,
},
};

client.createTable(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML =
"Unable to create table: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML =
"Created table: " + "\n" + JSON.stringify(data, undefined, 2);
}
});
}
</script>
</head>

<body>
<input
id="createTableButton"
type="button"
value="Create Table"
onclick="createMovies();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Create an Item


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "play.paas.macrometa.io";
const host = "https://api-" + dcName;
const apiKey = "<your-api-key>";
/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;
/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});

function createItem() {
var params = {
TableName: "Movies",
Item: {
year: { N: "2015" },
title: { S: "The Big New Movie" },
},
};

client.putItem(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML =
"Unable to add item: " + "\n" + JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML =
"PutItem succeeded: " + "\n" + JSON.stringify(data, undefined, 2);
}
});
}
</script>
</head>

<body>
<input
id="createItem"
type="button"
value="Create Item"
onclick="createItem();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Read an Item


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "play.paas.macrometa.io";
const host = "https://api-" + dcName;
const apiKey = "<your-api-key>";
/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;
/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});

function readItem() {
var table = "Movies";
var year = 2015;
var title = "The Big New Movie";

var params = {
TableName: table,
Key: {
year: year,
title: title,
},
};

client.getItem(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML =
"Unable to read item: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML =
"GetItem succeeded: " + "\n" + JSON.stringify(data, undefined, 2);
}
});
}
</script>
</head>

<body>
<input
id="readItem"
type="button"
value="Read Item"
onclick="readItem();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Update an Item


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "play.paas.macrometa.io";
const host = "https://api-" + dcName;
const apiKey = "<your-api-key>";
/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;
/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});

const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});


function updateItem() {

var table = "Movies";
var year = "2015";
var title = "The Big New Movie";

var params = {
TableName: table,
Key: {
year: { N: year },
title: { S: title },
},
};

client.updateItem(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML =
"Unable to update item: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML =
"UpdateItem succeeded: " +
"\n" +
JSON.stringify(data, undefined, 2);
}
});
}

</script>
</head>

<body>
<input
id="updateItem"
type="button"
value="Update Item"
onclick="updateItem();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Query Data


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "smoke1.eng3.macrometa.io"
const host = "https://api-" + dcName;
const apiKey = "guest.id1.CGYpbciDDhYK5cnyIjdSXQln2PUj1x7qO0cS4YgR9HBFzEm34cvhKa2Ge7kh00Zgce1af7"


/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;

/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});


function queryData() {
document.getElementById("textarea").innerHTML +=
"Querying for movies from 1985.";

var params = {
TableName: "Movies",
ProjectionExpression: "#yr, title, info.genres, info.actors[0]",
KeyConditionExpression:
"#yr = :yyyy and title between :letter1 and :letter2",
ExpressionAttributeNames: { "#yr": "year" },
ExpressionAttributeValues: {
":yyyy": { N: "1992" },
":letter1": { S: "A" },
":letter2": { S: "L" },
},
};

client.query(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML +=
"Unable to query. Error: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML +=
"Querying for movies from 1992 - titles A-L, with genres and lead actor: " +
"\n" +
JSON.stringify(data, undefined, 2);
}
});
}



</script>
</head>

<body>
<input
id="Query"
type="button"
value="Query Data"
onclick="queryData();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Scan Data


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "smoke1.eng3.macrometa.io"
const host = "https://api-" + dcName;
const apiKey = "guest.id1.CGYpbciDDhYK5cnyIjdSXQln2PUj1x7qO0cS4YgR9HBFzEm34cvhKa2Ge7kh00Zgce1af7"


/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;

/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});

function scanData() {
document.getElementById("textarea").innerHTML +=
"Scanning Movies table." + "\n";

var params = {
TableName: "Movies",
ProjectionExpression: "#yr, title, info.rating",
FilterExpression: "#yr between :start_yr and :end_yr",
ExpressionAttributeNames: { "#yr": "year" },
ExpressionAttributeValues: {
":start_yr": { N: "1950" },
":end_yr": { N: "1959" },
},
};

client.scan(params, onScan);

function onScan(err, data) {
if (err) {
document.getElementById("textarea").innerHTML +=
"Unable to scan the table: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
// Print all the movies
document.getElementById("textarea").innerHTML +=
"Scan succeeded. " + "\n";
data.Items.forEach(function (movie) {
document.getElementById("textarea").innerHTML +=
movie.year +
": " +
movie.title +
" - rating: " +
movie.info.rating +
"\n";
});

// Continue scanning if we have more movies (per scan 1MB limitation)
document.getElementById("textarea").innerHTML +=
"Scanning for more..." + "\n";
params.ExclusiveStartKey = data.LastEvaluatedKey;
client.scan(params, onScan);
}
}
}



</script>
</head>

<body>
<input
id="Scan"
type="button"
value="Scan Data"
onclick="scanData();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Delete Item

<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "play.paas.macrometa.io";
const host = "https://api-" + dcName;
const apiKey = "<your-api-key>";
/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;
/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});


function conditionalDelete() {
var params = {
TableName: "Movies",
Key: { year: { N: "2015" }, title: { S: "The Big New Movie" } },
ConditionExpression: "info.rating <= :val",
ExpressionAttributeValues: { ":val": { N: "5" } },
};

client.deleteItem(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML =
"The conditional delete failed: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML =
"The conditional delete succeeded: " +
"\n" +
JSON.stringify(data, undefined, 2);
}
});
}
</script>
</head>

<body>
<input
id="deleteItem"
type="button"
value="Delete Item"
onclick="conditionalDelete();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>

Delete Table


<html>
<head>
<script src="https://unpkg.com/mmdynamo@0.2.0/dist/mmdynamo.umd.js"></script>

<script>
const dcName = "play.paas.macrometa.io";
const host = "https://api-" + dcName;
const apiKey = "<your-api-key>";
/*
If you have a JWT token

const JWT = "xxxxxxxxxxxxxxxxxxxxxx";
*/

const service = "dynamodb";
const region = "us-east-1";
const endpoint = host + "/_api/dynamo";
// secretAccessKey is a required parameter for aws-sdk we recommend you to pass "c8"
const secretAccessKey = "c8";
const accessKeyId = "apikey " + apiKey;
/*
If you are using JWT token use the below instead

const accessKeyId = "bearer " + JWT;
*/
const { DynamoDB } = window.mmdynamo;

const client = new DynamoDB({
region,
endpoint,
accessKeyId,
secretAccessKey,
});

function deleteMovies() {
var params = {
TableName: "Movies",
};

client.deleteTable(params, function (err, data) {
if (err) {
document.getElementById("textarea").innerHTML =
"Unable to delete table: " +
"\n" +
JSON.stringify(err, undefined, 2);
} else {
document.getElementById("textarea").innerHTML = "Table deleted.";
}
});
}

</script>
</head>

<body>
<input
id="deleteTable"
type="button"
value="Delete Table"
onclick="deleteMovies();"
/>
<br /><br />
<textarea
readonly
id="textarea"
style={{ width:400px; height:800px }}
></textarea>
</body>
</html>