Have ideas to improve npm?Join in the discussion! »

    TypeScript icon, indicating that this package has built-in type declarations

    3.3.2 • Public • Published


    Build Status dependencies Status devDependencies Status styled with prettier

    Neo4-js is a object-graph mapper for JavaScript and neo4j with full TypeScript support. Neo4-js hides repetitive queries such as the basic CRUD operations to the developer. For best development experience use TypeScript to obtain good autocomplete results.


    With neo4-js you are able to quickly define your data model but maintain complete control over your models. The following code snipped shows how you can work with neo4-js.

    type PersonProps = {
      name?: StringProperty;
    type TaskProps = {
      title?: StringProperty;
      done?: boolean;
    class PersonModel extends Model<PersonProps, PersonInstance> {}
    const Person: PersonModel = new PersonModel("Person");
    class TaskModel extends Model<TaskProps, TaskInstance> {}
    const Task: TaskModel = new TaskModel("Task");
    const TaskCreatorRelation = relation
      .from(() => Person)
      .to(() => Task)
    const TaskAssigneeRelation = relation
    class PersonInstance extends ModelInstance<PersonProps> {
      @hasMany(Task, TaskCreatorRelation)
      tasks: HasManyActions<TaskProps, TaskInstance>;
      @hasMany(Task, TaskAssigneeRelation)
      assignedTasks: HasManyActions<TaskProps, TaskInstance>;
    class TaskInstance extends ModelInstance<TaskProps> {
      @hasOne(() => Person, () => TaskCreatorRelation)
      creator: HasOneActions<PersonProps, PersonInstance>;
    (async () => {
      const paul: PersonInstance = await Person.create({ name: "Paul" });
      const propsArray: TaskProps[] = [
          title: "Buy milk",
          title: "Buy beer",
          done: false,
      const tasks: TaskInstance[] = await paul.tasks.create(propsArray);


    The documentation is not completed yet but you'll find the basics on neo4.js.org. Any help is very much appreciated!


    To use neo4-js properly you need to add TypeScript to your project. For now we also install ts-node so that we are able to run our code without compiling it manually before running.

    yarn add -D typescript ts-node

    I recommend using the following tsconfig.json configuration.

      "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "target": "ES6",
        "experimentalDecorators": true,

    You might also install Docker to quickly create a neo4j database without any further installations. For neo4-js I used the following bash script to start a neo4j instance in docker. To run it you might create a scripts directory and add the following to neo4j-startup.sh, make sure you can execute the script with chmod 777 neo4j-startup.sh (because why not 777 on my local machine :P).

    # REST PORT: 10000
    # BOLT PORT: 10001
    echo "docker run -p 10000:7474 -p 10001:7687 --rm --env=NEO4J_AUTH=none neo4j"
    docker run -p 10000:7474 -p 10001:7687 --rm --env=NEO4J_AUTH=none neo4j

    The only runtime dependency you need to start using neo4-js is neo4-js itself.

    yarn add neo4-js

    Built With

    • TypeScript - TypeScript is a typed superset of Javascript that compiles to plain Javascript.


    Feel free to send a pull request or create an issue for bugs or feature requests.


    • Jan Schlacher - Initial work


    This project is licensed under the MIT License - see the LICENSE.md file for details


    npm i neo4-js

    DownloadsWeekly Downloads






    Unpacked Size

    865 kB

    Total Files


    Last publish


    • avatar