Skip to content

ERROR [ExceptionsHandler] Cannot read properties of null (reading 'options') #831

@nguyennhukhanh

Description

@nguyennhukhanh

Bug Report

[Nest] 14964  - 08/24/2023, 12:15:56 AM   ERROR [ExceptionsHandler] Cannot read properties of null (reading 'options')
TypeError: Cannot read properties of null (reading 'options')
    at CategoryService.createOne (\node_modules\@nestjsx\crud-typeorm\src\typeorm-crud.service.ts:118:35)
    at CategoryController.createOneBase (\node_modules\@nestjsx\crud\src\crud\crud-routes.factory.ts:227:27)
    at \node_modules\@nestjs\core\router\router-execution-context.js:38:29
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

Current behavior

I use to create a new Category. Here is describing it in json:

{
  "name": "New Category"
}

Input Code

Entity

import {
  Column,
  Entity,
  PrimaryGeneratedColumn,
  CreateDateColumn,
  DeleteDateColumn,
  OneToMany,
} from 'typeorm';

import { Product } from './product.entity';

@Entity('category')
export class Category {
  @Column({ name: 'id', type: 'bigint' })
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: 'name', nullable: false })
  name: string;

  @CreateDateColumn({ name: 'created_at', type: 'timestamp' })
  CreatedAt: Date;

  @CreateDateColumn({ name: 'updated_at', type: 'timestamp' })
  UpdatedAt: Date;

  @DeleteDateColumn({ name: 'deleted_at', nullable: true })
  DeletedAt?: Date;

  @OneToMany(() => Product, (product) => product.category)
  products: Product[];
}

Controller

import { Controller } from '@nestjs/common';
import { Crud, CrudController } from '@nestjsx/crud';
import { ApiTags } from '@nestjs/swagger';

import { CategoryService } from './category.service';
import { CreateCategoryDto, UpdateCategoryDto } from './dto/category.dto';

import { Category } from '../../database/entity/category.entity';

@ApiTags('category')
@Crud({
  model: {
    type: Category,
  },
  dto: {
    create: CreateCategoryDto,
    update: UpdateCategoryDto,
  },
  query: {
    join: {
      products: {
        eager: true,
      },
    },
  },
  routes: {
    only: [
      'getManyBase',
      'getOneBase',
      'createOneBase',
      'updateOneBase',
      'deleteOneBase',
    ],
  },
})
@Controller('category')
export class CategoryController implements CrudController<Category> {
  constructor(public service: CategoryService) {}
}

Service

import { Injectable } from '@nestjs/common';
import { TypeOrmCrudService } from '@nestjsx/crud-typeorm';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';

import { Category } from '../../database/entity/category.entity';

@Injectable()
export class CategoryService extends TypeOrmCrudService<Category> {
  constructor(@InjectRepository(Category) repository: Repository<Category>) {
    super(repository);
  }
}

Module

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

import { CategoryController } from './category.controller';
import { CategoryService } from './category.service';

import { Category } from '../../database/entity/category.entity';

@Module({
  imports: [TypeOrmModule.forFeature([Category])],
  controllers: [CategoryController],
  providers: [CategoryService],
})
export class CategoryModule {}

DTO

import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsOptional, IsString } from 'class-validator';

export class CreateCategoryDto {
  @ApiProperty()
  @IsNotEmpty()
  @IsString()
  name: string;
}

export class UpdateCategoryDto {
  @ApiProperty()
  @IsOptional()
  @IsString()
  name?: string;
}

Expected behavior

I expected it to create a new category with the corresponding name!

Environment


Package version: 0.0.1

 
For Tooling issues:
- Node version: v18.16.0
- Platform:  Windows
- Database: Postgres

Other:
- "@nestjs/common": "^10.0.0"
- "@nestjs/core": "^10.0.0"
- "@nestjs/typeorm": "^10.0.0"
- "pg": "^8.11.2"
- "@nestjsx/crud": "^5.0.0-alpha.3"
- "@nestjsx/crud-typeorm": "^5.0.0-alpha.3"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions