Skip to content

Milihhard/neo4j-func

Repository files navigation

neo4j-func

Coverage Status Testing app Building Publish to npm

neo4j-func is a neo4j wrapper for node.js
It helps making queries by using a functional approach

Installation

$npm install neo4j-func

or

$yarn add neo4j-func

Usage

define the config file

# neo4j.yaml
host: 0.0.0.0
port: 7687
credentials:
    user: neo4j
    password: neo4j

define your nodes and links

For a node :

@node('MyNode')
class MyNode extends NodeNeo4J {
    @property()
    @notNull
    mandatoryProperty: PropertyDefinition<string>;
    @property()
    property2: PropertyDefinition<string>;

    constructor(mandatoryProperty?: string, property2?: string) {
        super();
    }
}

For a link :

@node('MyLink')
class MyLink extends LinkNeo4J {
    @property()
    @notNull
    mandatoryProperty: PropertyDefinition<string>;
    @property()
    property2: PropertyDefinition<string>;

    constructor(mandatoryProperty?: string, property2?: string) {
        super();
    }
}

run you command

const myNode = new MyNode('mandatory', 'optionnal');
new Neo4jCommand()
    .match(myNode)
    .where(ID(myNode))
    .equals(myNode.value(myNode.property2))
    .returnValue(node)
    .run()
    .then((result) =>
        result.records[0].map((record) => {
            if (result.records.length > 0) {
                return result.records[0].MyNode as MyNode;
            } else {
                return null;
            }
        })
    );

.run return a promise