neo4j-module
v1.0.1
Published
Module that make connection with neo4j database in a nestjs application.
Downloads
5
Maintainers
Readme
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.