Nest, typegoose error on console `throw new Error(`Invalid ${type} object`);`

162 views Asked by At

hello everyone i have a problem i want to implement many to many on typegoose when i use

export const PortfolioModel = getModelForClass(Portfolio);

getting this error throw new Error(Invalid ${type} object);

portfolio.service.ts

import { getModelForClass, prop } from "@typegoose/typegoose";
import { Base, TimeStamps } from "@typegoose/typegoose/lib/defaultClasses";
import { Types } from "mongoose";

export interface Portfolio extends Base {}
export class Portfolio extends TimeStamps {
  @prop()
  title: string;
  @prop()
  description: string;
  @prop()
  status: boolean;
  @prop()
  client: string;
  @prop()
  location: string;
  @prop()
  publishedDate: string;
}

export const PortfolioModel = getModelForClass(Portfolio);

services.model.ts

import { getModelForClass, prop } from "@typegoose/typegoose";
import { Base, TimeStamps } from "@typegoose/typegoose/lib/defaultClasses";
import { Types } from "mongoose";

export interface Services extends Base {}
export class Services extends TimeStamps {
  @prop()
  name: string;
  @prop()
  description: string;
}

export const ServicesModel = getModelForClass(Services);

error:

throw new Error(`Invalid ${type} object`);
          ^
Error: Invalid model object
    at invalidObject (/Users/admin/Documents/personal-projects/partfolio/portfolio-backend/node_modules/nestjs-typegoose/dist/typegoose.providers.js:51:11)
    at Object.convertToTypegooseClassWithOptions (/Users/admin/Documents/personal-projects/partfolio/portfolio-backend/node_modules/nestjs-typegoose/dist/typegoose.providers.js:37:12)
    at /Users/admin/Documents/personal-projects/partfolio/portfolio-backend/node_modules/nestjs-typegoose/dist/typegoose.module.js:28:75
    at Array.map (<anonymous>)
    at Function.forFeature (/Users/admin/Documents/personal-projects/partfolio/portfolio-backend/node_modules/nestjs-typegoose/dist/typegoose.module.js:28:40)
    at Object.<anonymous> (/Users/admin/Documents/personal-projects/partfolio/portfolio-backend/src/portfolio/portfolio.module.ts:10:21)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)

tsconfig.json

 {
    "compilerOptions": {
        "module": "commonjs",
        "declaration": true,
        "removeComments": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "allowSyntheticDefaultImports": true,
        "target": "es2017",
        "sourceMap": true,
        "outDir": "./dist",
        "baseUrl": "./",
        "incremental": true,
        "skipLibCheck": true,
        "strictNullChecks": false,
        "noImplicitAny": false,
        "strictBindCallApply": false,
        "forceConsistentCasingInFileNames": false,
        "noFallthroughCasesInSwitch": false,
        "strict": true,
        "strictPropertyInitialization": false,
        "skipDefaultLibCheck": true
      }
    }
1

There are 1 answers

1
Baxa Developer On
import { prop, Ref } from "@typegoose/typegoose";
import { Base, TimeStamps } from "@typegoose/typegoose/lib/defaultClasses";
import { ServicesModel } from "../services/services.model";

export interface PortfolioModel extends Base {}
export class PortfolioModel extends TimeStamps {
  @prop()
  title: string;
  @prop()
  description: string;
  @prop()
  status: boolean;
  @prop()
  client: string;
  @prop()
  location: string;
  @prop()
  publishedDate: string;

  @prop({ ref: () => ServicesModel, type: () => [ServicesModel], default: [] })
  public categories: Ref<ServicesModel>[];
}

direct export solved my problem