Yet another Neo4j REST API wrapper for io.js, which provides Promise api.
npm install neo4j-io --save
var neo4j = require('neo4j-io')([url])
var cypher = 'MATCH (n:NODE) RETURN n LIMIT 1'
neo4j
.query(cypher)
.then()
.catch()
// With params
var cypher = 'MATCH (n:NODE) WHERE n.name={name} RETURN n'
var params = { name: 'neo4j' }
neo4j.query(cypher, params)
Create a node with JSON data
neo4j.Node.create({ name: 'name' })
Get node with specify id
neo4j.Node.get(1)
When prop is a string, it will update the specify property, otherwise reset node with given json
// Update name
neo4j.Node.update(1, 'name', 'new name')
// Reset node
neo4j.Node.update(1, {age: 10})
Delete node
neo4j.Node.delete(1)
Delete one or all properties
neo4j.Node.deleteProperties(1, 'name')
neo4j.Node.deleteProperties(1)
Create a relationship between two nodes with specify type
neo4j.Relationship.create(1, 2, 'LIKES')
neo4j.Relationship.create(1, 2, 'LIKES', {really: true})
Get a relationship node
Get properties
Update or reset properties
Delete a relationship
Get all relationships of the node
Get incoming relationships of the node
Get outgoing relationships of the node
Add label to node
Update labels of the node
neo4j.Label.update(1, 'NODE')
neo4j.Label.update(1, ['NODE', 'BOOK'])
Get labels of the node
Get all the nodes with label
Get all the labels
Get indexes for a label
Create a index for a label
neo4j.Index.create('label', 'index')
Drop index
All the api above are available in batch operation, exec
must be called when you want
to send the requests
var batch = neo4j.batch()
// Create a node
var batchId = batch.Node.create({name: 'batch'})
// Add a label to node, use id or batch Id
batch.Label.create({batch: batchId}, 'NODE')
// Create a relationship
batch.Relationship.create({batch: batchId}, 2, 'LIKE')
// Call exec
batch.exec().then()
// Batch also support cypher
var c1 = 'START n=node(1) RETURN n'
var c2 = 'MATCH (n:NODE) WHERE n.name={name} RETURN n'
batch.query(c1)
batch.query(c2, {name: 'test'})
batch.exec().then()
MIT