Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dilane3/neo4j-module

This module provides Neo4j integration for Nestjs.
https://github.com/dilane3/neo4j-module

Last synced: 7 days ago
JSON representation

This module provides Neo4j integration for Nestjs.

Awesome Lists containing this project

README

        


Nest Logo

# Neo4j Module

> Neo4j integration for Nest Application

## Description

This module provides [Neo4j](https://www.neo4j.com) integration for [Nest](http://nestjs.com/).

## Installation

```bash
$ npm install --save neo4j-module
```

or

```bash
$ 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.

```typescript
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](https://jamesfer.me/cypher-query-builder/index.html) module.

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

```typescript
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](LICENSE).