Skip to content

dilane3/neo4j-module

Repository files navigation

Nest Logo

Neo4j Module

Neo4j integration for Nest Application

Description

This module provides Neo4j integration for Nest.

Installation

$ npm install --save neo4j-module

or

$ yarn add neo4j-module

Quick Start

We need to register our neo4j module in our root module which is AppModule in our case and call the forRootAsync method with the configuration object.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { Neo4jModule } from 'neo4j-module';
import { Todo } from './entity/todo.entity';

@Module({
  imports: [
    Neo4jModule.forRootAsync({
      scheme: 'bolt',
      host: 'localhost',
      port: '7687',
      username: 'neo4j',
      password: 'ne04j',
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

Querying Neo4j

The Neo4jService is @Injectable, so it can be passed into any constructor. And for querying you have to be familiar with the cyper-query-builder module.

Note that you have to inject the Neo4jService using the @Inject() decorator

import { HttpException, 
Inject } from '@nestjs/common';
import { Neo4jService } from 'neo4j-module';

@Controller('todos')
export class AppController {
  constructor(
    @Inject(Neo4jService) private readonly neo4jService: Neo4jService,
  ) {}

  @Get('')
  async getTodos() {
    const query = this.neo4jService.initQuery();

    try {
      const result = await query.matchNode('todo', 'Todo').return('todo').run();

      if (result && result.length > 0) {
        const todos = result.map((todo) => {
          const todoData = todo['todo'].properties;

          return new Todo(todoData);
        });

        return todos;
      }
    } catch (err) {
      throw new HttpException("Can't get Todos", 500);
    }
  }
}

Keywords

  • nestjs
  • neo4j
  • cypher
  • query-builder
  • connection
  • nosql database

License

Nest is MIT licensed.

About

This module provides Neo4j integration for Nestjs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published