Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/keyvan-m-sadeghi/parse-neo4j
Parse results from neo4j's http endpoint to normal JSON
https://github.com/keyvan-m-sadeghi/parse-neo4j
json neo4j parser
Last synced: 18 days ago
JSON representation
Parse results from neo4j's http endpoint to normal JSON
- Host: GitHub
- URL: https://github.com/keyvan-m-sadeghi/parse-neo4j
- Owner: keyvan-m-sadeghi
- License: mit
- Created: 2016-09-07T07:50:21.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-05-09T11:30:54.000Z (over 4 years ago)
- Last Synced: 2024-12-02T06:04:46.022Z (21 days ago)
- Topics: json, neo4j, parser
- Language: JavaScript
- Size: 22.5 KB
- Stars: 3
- Watchers: 9
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![npm version](https://badge.fury.io/js/parse-neo4j.svg)](https://www.npmjs.com/package/parse-neo4j)
# parse-neo4j
Neo4j's http endpoint produces result that contains complete query information.
`parse-neo4j` helps those who only want what they've returned in the query as normal JSON.
## Install
```bash
npm install parse-neo4j --save
```## Usage
You can connect to neo4j's http endpoint via one of the many drivers available, e.g. official [`neo4j-driver`](https://github.com/neo4j/neo4j-javascript-driver)
```javascript
var neo4j = require('neo4j-driver').v1;
var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"));
var session = driver.session();
var result = session
.run("MERGE (james:Person {name : {nameParam} }) RETURN james.name", { nameParam:'James' })
.catch(function(error) {
console.log(error);
});
```
Then you can parse the results:
```javascript
var parser = require('parse-neo4j');
var parsedResult = result
.then(parser.parse)
.then(function(parsed){
parsed.forEach(function(parsedRecord) {
console.log(parsedRecord);
});
})
.catch(function(parseError) {
console.log(parseError);
});
```
`parser.parseRecord` could also be used for parsing a single record.## Example
Assuming below query:
```cypher
MATCH (a:Label1)
MATCH (a)-[:Another]->(b)
RETURN a AS key1, b AS key2
ORDER BY a.date DESC
LIMIT 2
```You get this output:
```JSON
[
{
"key1": {
"field1": "...",
"number": 42,
"date": 1460183280000
},
"key2": {}
},
{
"key1": {
"field1": "...",
"number": 2,
"date": 1460183280000
},
"key2": {}
},
]
```As opposed to:
```JSON
{
"records":[
{
"keys":[
"key1",
"key2"
],
"length":2,
"_fields":[
{
"identity":{
"low":143258,
"high":0
},
"labels":[
"Label1",
"Label2"
],
"properties":{
"field1":"...",
"number":{
"low":42,
"high":0
},
"date":1460183280000
}
},
{
"identity":{
"low":117186,
"high":0
},
"labels":[
"Another",
"Node"
],
"properties":{}
}
],
"_fieldLookup":{
"key1":0,
"key2":1
}
},
{
"keys":[
"key1",
"key2"
],
"length":2,
"_fields":[
{
"identity":{
"low":143260,
"high":0
},
"labels":[
"Label1",
"Label2"
],
"properties":{
"field1":"...",
"number":{
"low":2,
"high":0
},
"date":1460183280000
}
},
{
"identity":{
"low":117186,
"high":0
},
"labels":[
"Another",
"Node"
],
"properties":{}
}
],
"_fieldLookup":{
"key1":0,
"key2":1
}
}
],
"summary":{
"statement":{
"text":"MATCH (a:Label1)\nMATCH (a)-[:Another]->(b)\nRETURN a AS key1, b AS key2\nORDER BY a.date DESC\nLIMIT 2",
"parameters":{
"skip":{
"low":10,
"high":0
},
"limit":{
"low":2,
"high":0
}
}
},
"statementType":"r",
"updateStatistics":{
"_stats":{
"nodesCreated":0,
"nodesDeleted":0,
"relationshipsCreated":0,
"relationshipsDeleted":0,
"propertiesSet":0,
"labelsAdded":0,
"labelsRemoved":0,
"indexesAdded":0,
"indexesRemoved":0,
"constraintsAdded":0,
"constraintsRemoved":0
}
},
"plan":false,
"profile":false,
"notifications":[]
}
}
```## License
[MIT](https://github.com/assister-ai/parse-neo4j/blob/master/LICENSE)