【问题标题】:NestJS Cannot read property 'prototype' of undefinedNestJS无法读取未定义的属性“原型”
【发布时间】:2021-10-30 09:55:00
【问题描述】:

我正在尝试找出 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[];
}

【问题讨论】:

  • typegoose 支持 mongo v4 吗? TypeORM 在尝试使用 Mongo v4 时遇到了同样的问题,这就是我问的原因
  • 我正在尝试学习课程,并且一切正常,没有任何问题。因此 typegoose 支持 mongo v4

标签: javascript node.js nestjs


【解决方案1】:

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

users: [{ type: String }],

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

users: [{ type: Object }],

【讨论】:

    【解决方案2】:

    目前面临与 typegoose 相同的问题。 尝试使用此创建子文档时会发生这种情况

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

      @Field(type => [Rate])
      @Property({ type: () => Rate, default: [] })
      ratings: Rate[];
    
    

    来自 https://github.com/MichalLytek/type-graphql/blob/v1.0.0/examples/typegoose/entities/recipe.ts

    所以我必须删除类型才能工作。这导致混合 对象

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 2021-11-20
      • 1970-01-01
      • 2021-10-12
      • 2020-05-13
      • 2015-07-01
      • 2021-08-01
      • 1970-01-01
      • 2021-02-27
      相关资源
      最近更新 更多