{"id":15466096,"url":"https://github.com/4lessandrodev/neode-nestjs","last_synced_at":"2026-01-22T23:46:20.797Z","repository":{"id":44636423,"uuid":"359675519","full_name":"4lessandrodev/neode-nestjs","owner":"4lessandrodev","description":"A neode module for nestjs","archived":false,"fork":false,"pushed_at":"2022-02-03T05:51:38.000Z","size":659,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-28T07:22:30.728Z","etag":null,"topics":["neo4j","neode","nestjs","nestjs-module","schemas","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/neode-nestjs","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/4lessandrodev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-20T03:45:08.000Z","updated_at":"2023-12-04T14:44:25.000Z","dependencies_parsed_at":"2022-07-21T01:32:59.294Z","dependency_job_id":null,"html_url":"https://github.com/4lessandrodev/neode-nestjs","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4lessandrodev%2Fneode-nestjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4lessandrodev%2Fneode-nestjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4lessandrodev%2Fneode-nestjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4lessandrodev%2Fneode-nestjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/4lessandrodev","download_url":"https://codeload.github.com/4lessandrodev/neode-nestjs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250228696,"owners_count":21395958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neo4j","neode","nestjs","nestjs-module","schemas","typescript"],"created_at":"2024-10-02T01:04:57.246Z","updated_at":"2026-01-22T23:46:20.770Z","avatar_url":"https://github.com/4lessandrodev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neode with NestJS\n\nA module to connect Neode, Neo4j and NestJS.\n\n`npm i neode-nestjs` or `yarn add neode-nestjs`\n\n\u003cimg src=\"./readme/nest.png\"\u003e\n\n#### Variables\n\n\u003e .env\n\nIf your connection fail check if you are reading your .env settings before start your application\nYou must add `env-cmd` before your script\n\n```json\n{\n     \"start:dev\": \"env-cmd nest start --watch\"\n}\n```\n\n```shell\nNEO4J_DATABASE=neo4j\nNEO4J_USERNAME=neo4j\nNEO4J_PASSWORD=your-password\nNEO4J_HOST=localhost\nNEO4J_PORT=7687\nNEO4J_PROTOCOL=neo4j\nNEO4J_ENCRYPTION=ENCRYPTION_OFF\n```\n\n---\n\n#### Main module with .env settings\n\n```ts\nimport { NeodeModule } from 'neode-nestjs';\n```\n\n\u003e app.module.ts\n\n```ts\n@Module({\n     imports: [NeodeModule.forRoot(), UserModule],\n     controllers: [AppController],\n     providers: [],\n})\nexport class AppModule {}\n```\n\n#### Main module with connection settings\n\n```ts\n@Module({\n imports: [\n  NeodeModule.forRoot (\n   { host: 'bolt://localhost', port: 7689, username: 'name', password: '1234' }\n ), UserModule],\n     controllers: [UserController],\n     providers: [UserService],\n})\nexport class UserModule {}\n```\n\n---\n\n#### Entities or Schemas\n\n\u003e Your schema to inject on module\n\nImportant when you import `Neode` if throw types error you should use import like example bellow.\n\n```ts\nimport * as Neode from 'neode';\n```\n\n\u003cimg src=\"./readme/Neo.jpg\"\u003e\n\n\u003e Schema\n\n```ts\nimport { SchemaObject } from 'neode';\n\nconst UserSchema: SchemaObject = {\n     id: {\n          type: 'uuid',\n          primary: true,\n          required: true,\n     },\n     name: {\n          type: 'string',\n          required: true,\n     },\n     email: {\n          type: 'string',\n          unique: true,\n          required: true,\n     },\n     password: {\n          type: 'string',\n          required: true,\n     },\n     avatar: {\n          type: 'string',\n     },\n     isFirstAuth: {\n          type: 'boolean',\n     },\n};\n\nexport default UserSchema;\n```\n\n---\n\n#### Specific module with .env settings\n\n```ts\n@Module({\n     imports: [NeodeModule.forFeature({ User: UserSchema })],\n     controllers: [UserController],\n     providers: [UserService],\n})\nexport class UserModule {}\n```\n\n#### Specific module with connection settings\n\n```ts\n@Module({\n imports: [\n  NeodeModule.forFeature (\n   { User: UserSchema }, \n   { host: 'bolt://localhost', port: 7689, username: 'name', password: '1234' }\n )],\n     controllers: [UserController],\n     providers: [UserService],\n})\nexport class UserModule {}\n```\n\n---\n\n#### User interface\n\nExample User interface\n\n```ts\nexport interface UserInterface {\n     id: string;\n     name: string;\n     email: string;\n     password: string;\n     avatar: string;\n     isFirstAuth: boolean;\n}\n```\n\n---\n\n#### Create user dto\n\nDto example if you are using rest api.\nThe decorator validation `@IsEmail` refer to `class-validator`\n\n```ts\nexport class CreateUserDto implements Partial\u003cUserInterface\u003e {\n     @IsNotEmpty()\n     avatar!: string;\n\n     @IsEmail()\n     @IsNotEmpty()\n     email!: string;\n\n     @IsString()\n     @IsNotEmpty()\n     name!: string;\n\n     @IsNotEmpty()\n     @IsString()\n     password!: string;\n}\n```\n\n#### Service class\n\nYou can get connection by injected `Connection`. It returns a Neode instance\n\nThe word `'User'` is the same you have used to inject on `{ User: UserSchema }` if you use same different word as not `User` you must to use it.\n\n```ts\n@Injectable()\nexport class UserService {\n     constructor(@Inject('Connection') private readonly neode: Neode) {}\n\n     async createUser(dto: CreateUserDto): Promise\u003cvoid\u003e {\n          // note that on example my interface has id and isFirstAuth attributes, and my Dto not.\n          // Generate id\n          const id: string = uuid();\n          // Set isFirstAuth\n          const isFirstAuth: boolean = true;\n\n          await this.neode.merge('User', { ...dto, id, isFirstAuth });\n     }\n\n     async getUsers(): Promise\u003cUserInterface[]\u003e {\n          const users = await this.neode.all('User');\n          return (await users.toJson()) as UserInterface[];\n     }\n}\n```\n\nReferences\n\n- [ Neode ](https://www.npmjs.com/package/neode 'Neode npm page')\n- [ Neo4J ](https://www.npmjs.com/package/neo4j-driver 'Neo4j Driver npm page')\n- [ NestJS ](https://nestjs.com/ 'NestJS home page')\n- [Class Validator](https://www.npmjs.com/package/class-validator 'Class validator npm page')\n- [Env Cmd](https://www.npmjs.com/package/env-cmd 'Env cmd npm page')\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4lessandrodev%2Fneode-nestjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F4lessandrodev%2Fneode-nestjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4lessandrodev%2Fneode-nestjs/lists"}