首页 > 解决方案 > NestJS无法读取未定义的属性“原型”

问题描述

我试图找出 NestJS 并且数组中有错误。请告诉我如何解决它?我试图弄清楚并意识到错误出现在“优势:TopPageAdvantage [];”中。出于某种原因,他不想添加数组。如果没有数组,一切都会正常工作。

package.json 中的版本:

"@typegoose/typegoose": "^8.2.0",
"mongoose": "^6.0.3",

Docker 中的版本:image: mongo:4.4.4.

[Nest] 16224  - 31.08.2021, 22:31:41   ERROR [ExceptionHandler] Cannot read property 'prototype' of undefined
TypeError: Cannot read property 'prototype' of undefined
    at mapOptions (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@typegoose\typegoose\src\internal\utils.ts:460:50)
    at Object.mapArrayOptions (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@typegoose\typegoose\src\internal\utils.ts:389:18)
    at Object.processProp (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@typegoose\typegoose\src\internal\processProp.ts:469:18)
    at Object._buildSchema (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@typegoose\typegoose\src\internal\schema.ts:59:7)
    at buildSchema (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@typegoose\typegoose\src\typegoose.ts:140:9)
    at Object.getModelForClass (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@typegoose\typegoose\src\typegoose.ts:77:58)
    at InstanceWrapper.modelFactory [as metatype] (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\nestjs-typegoose\dist\typegoose.providers.js:22:58)
    at Injector.instantiateClass (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@nestjs\core\injector\injector.js:294:55)
    at callback (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@nestjs\core\injector\injector.js:43:41)
    at Injector.resolveConstructorParams (E:\Обучение node.js\udemy_nest_js\top-api\node_modules\@nestjs\core\injector\injector.js:119:24)

页面模块:

import { Module } from '@nestjs/common';
import { TypegooseModule } from "nestjs-typegoose";
import { TopPageController } from './top-page.controller';
import { TopPageModel } from './top-page.model';

@Module({
  controllers: [TopPageController],
   imports:[
     TypegooseModule.forFeature([
        {
          typegooseClass: TopPageModel,
          schemaOptions: {
            collection:'TopPage'
          }
        }
     ])
   ]
})
export class TopPageModule {}

页面模型:

import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';
import { prop } from '@typegoose/typegoose';
import { ProductCharacteristic } from '../product/product.model';

export enum TopLevelCategory{
  Courses,
  Services,
  Books,
  Products
}

export class HhData{
  @prop()
  count:number;

  @prop()
  juniorSalary:number;

  @prop()
  middleSalary:number;

  @prop()
  seniorSalary:number;
}

export class TopPageAdvantage{
  @prop()
  title:string;

  @prop()
  description:string;
}

export interface TopPageModel extends Base{}
export class TopPageModel extends TimeStamps{

  @prop({ enum: TopLevelCategory })
  firstCategory:TopLevelCategory;

  @prop()
  secondCategory:string;

  @prop({unique:true})
  alias:string;

  @prop()
  title:string;

  @prop()
  category:string;

  @prop({type: () => HhData})
  hh?:HhData;

  @prop({type: () => [TopPageAdvantage]})
  advantages:TopPageAdvantage[];

  @prop()
  seoText:string;

  @prop()
  tagsTitle:string;

  @prop({type: () => [String]})
  tags:string[];
}

标签: javascriptnode.jsnestjs

解决方案


在猫鼬中,您可以直接存储数组项,如下所示

users: [{ type: String }],

如果要存储类类型,则可以在数组中指定对象类型

users: [{ type: Object }],

推荐阅读