title | description | services | documentationcenter | author | manager | editor | ms.assetid | ms.service | ms.custom | ms.workload | ms.tgt_pltfrm | ms.devlang | ms.topic | ms.date | ms.author |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Build an Azure Cosmos DB Node.js application by using Graph API | Microsoft Docs |
Presents a Node.js code sample you can use to connect to and query Azure Cosmos DB |
cosmos-db |
dennyglee |
jhubbard |
daacbabf-1bb5-497f-92db-079910703046 |
cosmos-db |
quick start connect, mvc |
na |
dotnet |
quickstart |
08/29/2017 |
denlee |
Azure Cosmos DB is the globally distributed multimodel database service from Microsoft. You can quickly create and query document, key/value, and graph databases, all of which benefit from the global distribution and horizontal scale capabilities at the core of Azure Cosmos DB.
This Quick Start article demonstrates how to create an Azure Cosmos DB account for Graph API (preview), database, and graph by using the Azure portal. You then build and run a console app by using the open-source Gremlin Node.js driver.
Before you can run this sample, you must have the following prerequisites:
[!INCLUDE quickstarts-free-trial-note]
[!INCLUDE cosmos-db-create-dbaccount-graph]
[!INCLUDE cosmos-db-create-graph]
Now let's clone a Graph API app from GitHub, set the connection string, and run it. You'll see how easy it is to work with data programmatically.
-
Open a Git terminal window, such as Git Bash, and change (via
cd
command) to a working directory. -
Run the following command to clone the sample repository:
git clone https://github.com/Azure-Samples/azure-cosmos-db-graph-nodejs-getting-started.git
-
Open the solution file in Visual Studio.
Let's make a quick review of what's happening in the app. Open the app.js
file, and you see the following lines of code.
-
The Gremlin client is created.
const client = Gremlin.createClient( 443, config.endpoint, { "session": false, "ssl": true, "user": `/dbs/${config.database}/colls/${config.collection}`, "password": config.primaryKey });
The configurations are all in
config.js
, which we edit in the following section. -
A series of functions are defined to execute different Gremlin operations. This is one of them:
function addVertex1(callback) { console.log('Running Add Vertex1'); client.execute("g.addV('person').property('id', 'thomas').property('firstName', 'Thomas').property('age', 44).property('userid', 1)", { }, (err, results) => { if (err) callback(console.error(err)); console.log("Result: %s\n", JSON.stringify(results)); callback(null) }); }
-
Each function executes a
client.execute
method with a Gremlin query string parameter. Here is an example of howg.V().count()
is executed:console.log('Running Count'); client.execute("g.V().count()", { }, (err, results) => { if (err) return console.error(err); console.log(JSON.stringify(results)); console.log(); });
-
At the end of the file, all methods are then invoked using the
async.waterfall()
method. This will execute them one after the other:try{ async.waterfall([ dropGraph, addVertex1, addVertex2, addEdge, countVertices ], finish); } catch(err) { console.log(err) }
-
Open the config.js file.
-
In config.js, fill in the
config.endpoint
key with the Gremlin URI value from the Overview page of the Azure portal.config.endpoint = "GRAPHENDPOINT";
If the Gremlin URI value is blank, you can generate the value from the Keys page in the portal. Use the URI value, remove https://, and change documents to graphs.
The Gremlin endpoint must be only the host name without the protocol/port number, like
mygraphdb.graphs.azure.com
(nothttps://mygraphdb.graphs.azure.com
ormygraphdb.graphs.azure.com:433
). -
In config.js, fill in the config.primaryKey value with the Primary Key value from the Keys page of the Azure portal.
config.primaryKey = "PRIMARYKEY";
-
Enter the database name, and graph (container) name for the value of config.database and config.collection.
Here's an example of what your completed config.js file should look like:
var config = {}
// Note that this must not have HTTPS or the port number
config.endpoint = "testgraphacct.graphs.azure.com";
config.primaryKey = "Pams6e7LEUS7LJ2Qk0fjZf3eGo65JdMWHmyn65i52w8ozPX2oxY3iP0yu05t9v1WymAHNcMwPIqNAEv3XDFsEg==";
config.database = "graphdb"
config.collection = "Persons"
module.exports = config;
-
Open a terminal window and change (via
cd
command) to the installation directory for the package.json file that's included in the project. -
Run
npm install
to install the required npm modules, includinggremlin
. -
Run
node app.js
in a terminal to start your node application.
You can now go back to Data Explorer in the Azure portal to view, query, modify, and work with your new graph data.
In Data Explorer, the new database appears in the Graphs pane. Expand the database, followed by the collection, and then select Graph.
The data generated by the sample app is displayed in the next pane within the Graph tab when you select Apply Filter.
Try completing g.V()
with .has('firstName', 'Thomas')
to test the filter. Note that the value is case sensitive.
[!INCLUDE cosmosdb-tutorial-review-slas]
If you do not plan to continue using this app, delete all resources that you created in this article by doing the following:
-
In the Azure portal, on the left navigation menu, select Resource groups. Then select the name of the resource that you created.
-
On your resource group page, select Delete. Type the name of the resource to be deleted, and then select Delete.
In this article, you learned how to create an Azure Cosmos DB account, create a graph by using Data Explorer, and run an app. You can now build more complex queries and implement powerful graph traversal logic by using Gremlin.
[!div class="nextstepaction"] Query by using Gremlin