Using Neo4j with Express NodeJs
Posted By : Prabjot Singh | 25-Mar-2015
Here I am building simple app using database Neo4j. I will perform basic operation (CRUD) on Neo4j in my application. So before starting, you should have basic knowledge of Neo4j. Neo4j is graph database where data is stored in the form of entities and relationship. For more details,you can find at Introduction to Neo4j
So there are four popular NodeJS modules for connecting Neo4j with our application
-
Node-Neo4j (Thingdom)
-
Node-Neo4j (Philipkueng)
-
Neo4j-js
-
Seraph
They all support cypher end point. Apart from that,only philipkueng support transactional api. If I ask about labels of node,then only supported by philipkueng and seraph. There I am ended with philipkueng module.
First of all, you should have familiar with basics of express nodejs.if you haven't ,don't worry about
that,you can find my blog My first application with express NodeJS. Before move to next step, you have to install node-neo4j module
JS
Download and Installing Node-Neo4j Module
Now you know better how to install node-neo4j module. You will install it by command “npm install node-neo4j” and after installing you will see a directory of node-neo4j inside node_modules package.
It will provide us library to connecting with neo4j.
Changes in Server.js
Compare to my previous blog,there are lot of changes in Server.js. We have installed node-neo4j module. Now,time to using in our program. Copy below code in your Server.js file
var express=require('express');
var app=express();
var neo4j = require('node-neo4j'); // there we are importing dependencies
var db = new neo4j(“http://localhost:7474/”) // there you will provide your neo4j host url
require('./router/main')(app,db); // there we have to pass our database reference in main.js,and rest of lines are same as my previous one
app.set('views',__dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
var server=app.listen(3000,function(){
console.log("Express is running on port 3000");
});
Changes in Main.js
We have to do some changes in main.js. In my preveous blog,we were rendering simple content but now we will do crud operation with neo4j ,we will render database information. Please copy below code in main.js
module.exports=function(app,db)
{
app.post('/user', function (req, res) {
db.insertNode({
name: 'Prabjot',
sex: 'male'
},function(err, node){
if(err) throw err;
// Output node properties.
console.log(node.data);
// Output node id.
console.log(node._id);
});
});
app.get('/user', function (req, res) {
db.readNode(398, function(err, node){
if(err){
console.log("err is"+err);
throw err;
}
// Output node properties.
console.log(node);
res.render('index.html',{node:node}); // so there is cool
feature of ejs,we set response in variable “node” and we can access it on html as like that (<%= node %>)
});
});
app.put('/userUpdate', function (req, res) {
db.updateNode(398, {name:'Prabjot Singh'}, function(err, node){
if(err) throw err;
if(node === true){
// node updated
} else {
// node not found, hence not updated
}
});
});
app.delete('/userDelete', function (req, res) {
db.deleteNode(398, function(err, node){
if(err) throw err;
if(node === true){
// node deleted
} else {
// node not deleted because not found or because of existing relationships
}
});
});
}
Let's Run Server
Almost everything is done,start up you server by executing Server.js (“node Server.js”)
Thank you
Prabjot
Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.
About Author
Prabjot Singh
Prabjot is a Java and Grails developer.He has a good hands on neo4J, AngularJS. He likes to work on new technologies