{"id":40695,"library":"cassandra-orm4nest","title":"Cassandra ORM for NestJS","description":"Cassandra ORM wrapper for NestJS (v1.0.5) based on `cassandra-driver`. Provides decorators (`@Entity`, `@Column`), module integration (`forRoot`/`forFeature`), dependency injection (`@InjectMapper`, `@InjectClient`), and a `BaseService` class with CRUD utilities. Differentiator: seamless NestJS module pattern compared to raw driver usage. Stable, low release cadence. Requires peer dependencies: @nestjs/common/core, cassandra-driver 4.x, reflect-metadata, rxjs.","status":"active","version":"1.0.5","language":"javascript","source_language":"en","source_url":"https://github.com/tensoar/cassandra-orm4nest","tags":["javascript","cassandra","orm","nestjs"],"install":[{"cmd":"npm install cassandra-orm4nest","lang":"bash","label":"npm"},{"cmd":"yarn add cassandra-orm4nest","lang":"bash","label":"yarn"},{"cmd":"pnpm add cassandra-orm4nest","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"NestJS decorators and module system","package":"@nestjs/common","optional":false},{"reason":"NestJS core module","package":"@nestjs/core","optional":false},{"reason":"DataStax Cassandra driver for connectivity","package":"cassandra-driver","version":"^4.x","optional":false},{"reason":"Required for decorator metadata","package":"reflect-metadata","optional":false},{"reason":"Reactive extensions used by NestJS","package":"rxjs","optional":false}],"imports":[{"note":"Decorator for entity definition. Must be used with @Column.","symbol":"Entity","correct":"import { Entity } from 'cassandra-orm4nest'"},{"note":"Decorator for entity columns.","symbol":"Column","correct":"import { Column } from 'cassandra-orm4nest'"},{"note":"Module for configuring and registering entities via forRoot/forFeature.","symbol":"CassandraOrmModule","correct":"import { CassandraOrmModule } from 'cassandra-orm4nest'"},{"note":"Use for injecting mapper instances of entities. TypeScript recommended.","wrong":"const InjectMapper = require('cassandra-orm4nest').InjectMapper","symbol":"InjectMapper","correct":"import { InjectMapper } from 'cassandra-orm4nest'"},{"note":"Injects the Cassandra client instance.","symbol":"InjectClient","correct":"import { InjectClient } from 'cassandra-orm4nest'"},{"note":"Base class providing CRUD methods. Extend to create services.","symbol":"BaseService","correct":"import { BaseService } from 'cassandra-orm4nest'"}],"quickstart":{"code":"// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { CassandraOrmModule } from 'cassandra-orm4nest';\nimport { auth } from 'cassandra-driver';\nimport Device from './device.entity';\nimport DeviceService from './device.service';\nimport DeviceController from './device.controller';\n\n@Module({\n  imports: [\n    CassandraOrmModule.forRoot({\n      contactPoints: ['localhost'],\n      authProvider: new auth.PlainTextAuthProvider(process.env.CASSANDRA_USER ?? '', process.env.CASSANDRA_PASSWORD ?? ''),\n      localDataCenter: 'datacenter1'\n    }),\n    CassandraOrmModule.forFeature([Device])\n  ],\n  controllers: [DeviceController],\n  providers: [DeviceService]\n})\nexport class AppModule {}\n\n// device.entity.ts\nimport { Entity, Column } from 'cassandra-orm4nest';\n\n@Entity({ keyspace: 'test', table: 'device' })\nexport default class Device {\n  @Column({ name: 'serial_number' })\n  serialNumber: string;\n\n  @Column({ name: 'create_time' })\n  createTime: Date;\n\n  @Column()\n  version: string;\n\n  @Column({ name: 'is_online' })\n  isOnline: boolean;\n}\n\n// device.service.ts\nimport { Injectable } from '@nestjs/common';\nimport { InjectMapper, InjectClient, BaseService } from 'cassandra-orm4nest';\nimport { Client } from 'cassandra-driver';\nimport Device from './device.entity';\n\n@Injectable()\nexport default class DeviceService extends BaseService<Device> {\n  constructor(\n    @InjectMapper(Device) private readonly mapper,\n    @InjectClient() client: Client\n  ) {\n    super(client, mapper, Device);\n  }\n}","lang":"typescript","description":"Shows NestJS module setup with CassandraOrmModule, entity definition with @Entity/@Column, and service injection with BaseService."},"warnings":[{"fix":"Switch to findRealAll/findRealMany for querying large datasets, or specify a higher limit in the mapper options.","message":"ModelMapper's findAll and find methods have a default limit of 5000 results. Use findRealAll/findRealMany for unlimited results via eachRow.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure @Column name attribute matches Cassandra column names.","message":"Entity keyspace and table names must match Cassandra schema exactly; column name mapping via @Column({name: '...'}) is required if property names differ.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'4':56 'base':11 'baseservic':30 'cadenc':48 'cassandra':1,5,14,54,63 'cassandra-driv':13,53 'class':31 'column':19 'compar':40 'crud':33 'decor':17 'depend':24,51 'differenti':35 'driver':15,43,55 'entiti':18 'forfeatur':23 'forroot':22 'inject':25 'injectcli':27 'injectmapp':26 'integr':21 'javascript':62 'low':46 'metadata':60 'modul':20,38 'nestj':4,9,37,65 'nestjs/common/core':52 'orm':2,6,64 'pattern':39 'peer':50 'provid':16 'raw':42 'reflect':59 'reflect-metadata':58 'releas':47 'requir':49 'rxjs':61 'seamless':36 'stabl':45 'usag':44 'util':34 'v1.0.5':10 'wrapper':7 'x':57","created_at":"2026-06-04T18:48:48.826971+00:00","updated_at":"2026-06-04T18:48:48.826971+00:00","problems":[{"fix":"Run 'npm install cassandra-orm4nest' and ensure tsconfig.json includes 'node_modules/@types'.","cause":"Package not installed or missing TypeScript declaration files.","error":"Cannot find module 'cassandra-orm4nest' or its corresponding type declarations."},{"fix":"Set 'experimentalDecorators': true and 'emitDecoratorMetadata': true in tsconfig.json.","cause":"Decorators not enabled in TypeScript configuration.","error":"Invalid or unexpected token: @Entity"},{"fix":"Ensure entity is included in the array passed to CassandraOrmModule.forFeature() in the module.","cause":"Using @InjectMapper incorrectly or entity not registered via forFeature.","error":"Mapper is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/tensoar/cassandra-orm4nest#readme","github":"https://github.com/tensoar/cassandra-orm4nest","docs":null,"changelog":null,"pypi":null,"npm":"cassandra-orm4nest","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}