Neo4j Persistor
This module allows data to be saved, retrieved, searched for, and deleted in a Neo4j instance.
####To use this module you can have a Neo4j instance running on your network or you can use Neo4j embedded with this module.
Dependencies
This module can be used with a Neo4j server to be available on the network.
Name
The module name is neo4j-persistor.
Configuration
Mode server
The neo4j-persistor module takes the following configuration:
{
"address": <address>,
"server-uri": "http://localhost:7474/db/data/",
"poolsize": <pool_size>
}
For example:
{
"address": "neo4j.persistor",
"server-uri": "http://localhost:7474/db/data/",
"poolsize": 32
}
Let's take a look at each field in turn:
addressThe main address for the module. Every module has a main address. Defaults toneo4j.persistor.server-uriuri of the Neo4j instance.pool_sizeThe number of socket connections the module instance should maintain to the Neo4j server. Default is 32.
HA
If you want to use the rest mode with Neo4j cluster. You can specify all server address. The persistor manage the check and change of master or slave. For example : "server-uris": ["http://10.13.2.244:7474/db/data/","http://10.13.2.245:7474/db/data/","http://10.13.2.246:7474/db/data/"]
Mode embedded
The neo4j-persistor module takes the following configuration:
{
"address": <address>,
"datastore-path": <datastore>,
"neo4j" : {
"allow_store_upgrade" : <allow_store_upgrade>,
"node_auto_indexing" : <node_auto_indexing>,
"node_keys_indexable" : <node_keys_indexable>
}
}
For example:
{
"address": "wse.neo4j.persistor",
"datastore-path": "./data/tests/neo4j",
"neo4j" : {
"allow_store_upgrade" : "true",
"node_auto_indexing" : "true",
"node_keys_indexable" : "externalId"
}
}
Let's take a look at each field in turn:
addressThe main address for the module. Every module has a main address. Defaults toneo4j.persistor.datastore-pathpath in filesystem to store neo4j data.allow_store_upgradeallow neo4j to migrate data when upgrade version.node_auto_indexingallow neo4j to auto index properties with lucene.node_keys_indexablespecify properties to index with lucene.
Operations
The module can execute Cypher queries in some modes
####Transactions are only availables in server mode. In embedded mode, queries are execute without transaction.
Execute simple query
To execute a single query in the database.
{
"action" : "execute",
"query" : <query>,
"params" : <params>
}
Where:
queryis the cypher query. This field is mandatory.paramsis the JSON object with query params.
An example would be:
{
"action" : "execute",
"query" : "MATCH (u:User {name : {name}}) RETURN u",
"params" : {
"name" : "Dalek"
}
}
When the query complete successfully, a reply message is sent back to the sender with the following data:
{
"status": "ok",
"result" : <result>
}
Where
resultis an JsonArray of JsonObject.
If an error occurs in saving the document a reply is returned:
{
"status": "error",
"message": <message>
}
Where
messageis an error message.
Execute batch queries
To execute a batch queries in the database.
{
"action" : "executeBatch",
"queries" : <queries>,
}
Where:
queriesis a JsonArray. This field is mandatory.
An example would be:
{
"action" : "executeBatch",
"queries" : [
{
"query" : "MATCH (u:User {name : {name}}) RETURN u",
"params" : {
"name" : "Dalek"
}
},
{
"query" : "MATCH (u:User {name : 'toto'}) RETURN u"
}
]
}
When the save complete successfully, a reply message is sent back to the sender with the following data:
{
"status": "ok",
"results" : <result>
}
Where
resultis an JsonArray of JsonObject.
If an error occurs in saving the document a reply is returned:
{
"status": "error",
"message": <message>
}
Where
messageis an error message.
Execute transactions
To execute queries with transactions in the database.
{
"action" : "executeTransaction",
"statements" : <statements>,
"commit" : <commit>,
"transactionId" : <transactionId>
}
Where:
statementsis a JsonArray. This field is mandatory.commitis a boolean. If is true the transaction be commit. Else, return transactionId without commit.transactionIdis a Integer to retrieve transaction.
An example would be:
{
"action" : "executeTransaction",
"statements" : [
{
"statement" : "MATCH (u:User {name : {name}}) RETURN u",
"parameters" : {
"name" : "Dalek"
}
},
{
"statement" : "MATCH (u:User {name : 'toto'}) RETURN u"
}
],
"commit" : true
}
When the save complete successfully, a reply message is sent back to the sender with the following data:
{
"status": "ok",
"results" : <result>,
"transactionId" : <transactionId>
}
Where
resultis an JsonArray of JsonObject.transactionIdis an integer. Is returned only if transaction are not committed.
If an error occurs in saving the document a reply is returned:
{
"status": "error",
"message": <message>
}
Where
messageis an error message.
Reset Transaction Timeout
All transaction are a timeout value. You can use this method to reset timeout without commit transaction.
{
"action" : "resetTransactionTimeout",
"transactionId" : <transactionId>
}
Where:
transactionIdis a Integer to retrieve transaction.
An example would be:
{
"action" : "resetTransactionTimeout",
"transactionId" : 42
}
When the save complete successfully, a reply message is sent back to the sender with the following data:
{
"status": "ok",
"results" : <result>,
"transactionId" : <transactionId>
}
Where
resultis an JsonArray of JsonObject.transactionIdis an integer. Is returned only if transaction are not committed.
If an error occurs in saving the document a reply is returned:
{
"status": "error",
"message": <message>
}
Where
messageis an error message.
Rollback Transaction
You can use this method to rollback transaction.
{
"action" : "rollbackTransaction",
"transactionId" : <transactionId>
}
Where:
transactionIdis a Integer to retrieve transaction.
An example would be:
{
"action" : "rollbackTransaction",
"transactionId" : 42
}
When the save complete successfully, a reply message is sent back to the sender with the following data:
{
"status": "ok",
}
If an error occurs in saving the document a reply is returned:
{
"status": "error",
"message": <message>
}
Where
messageis an error message.