Vineel
Vineel

Reputation: 1788

Node Module for Neo4j

My app has Node JS. I'm trying to connect NodeJS and Neo4j together. Can some one tell me, how to connect both? My queries need to work with labels on Neo4j. Please let me know which module should I use in Node Js to achieve this?I have spent lot of time already with-out luck.

Upvotes: 8

Views: 4750

Answers (3)

Keyvan
Keyvan

Reputation: 873

Check out the koa-neo4j framework, it uses the official neo4j-driver under the hood. One can write native Cypher (as .cyp files) in it on top of the latest stable neo4j (3.0.3 at the time of this writing) which, among other things, allows querying labels.

https://github.com/assister-ai/koa-neo4j

https://github.com/assister-ai/koa-neo4j-starter-kit

In a Neo4j enabled application, conducting queries directly from client side might not be the best choice:

  • Database is exposed to the client, unless some explicit security mechanism is in place; one can see the innards of the database by View page source
  • There is no one server to rule them all, queries are strings, scattered around different clients (web, mobile, etc.)
  • Third-party developers might not be familiar with Cypher

koa-neo4j addresses all of the above issues:

  • Stands as a middle layer between clients and database
  • Gives structure to your server's logic in form of a file-based project; finally a home for Cypher! All of the clients can then talk to an instance of this server
  • Converts Cypher files to REST routes, a cross-platform web standard that developers are familiar with, it does so on top of the widely-adapted koa server, ripe for further customization

Disclosure I was the original author of koa-neo4j

Upvotes: 2

Buzzeins
Buzzeins

Reputation: 101

neode - Neo4j OGM for Node JS. here

Upvotes: 1

Eve Freeman
Eve Freeman

Reputation: 33175

Last I checked there are at least 4 popular and actively developed node.js modules (ordered by number of stars):

They all support the Cypher endpoint, which was a requirement for my inclusion. One key feature that stands out from the list is that philippkueng/node-neo4j is the only one that has transactional API support. Another is the ability to ask for labels of nodes, and that is supported only by seraph and philippkueng/node-neo4j. (usually you can avoid needing to ask for labels of a node if you make your Cypher query ask for labels explicitly, which avoids a request back and forth)

On the other hand, it's really not hard to just implement a few HTTP requests, directly accessing the Cypher or Transactional Cypher endpoints, massaging the results as you see fit for your application.

Another cool new development I've seen recently was https://github.com/brian-gates/cypher-stream, which emits a stream of results from Cypher, enabling streaming JSON parsing, which is another performance-oriented feature lacking from the four listed above.

Edit: 03/2016 There is a new official JS driver for use with the new bolt protocol (binary). For new development this should definitely be considered. Bolt is planned for release in Neo4j 3.0. https://github.com/neo4j/neo4j-javascript-driver

Upvotes: 17

Related Questions