You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS集成Typegoose数组属性报错Cannot read property 'prototype'如何解决

修复方案

问题原因

该报错由@typegoose/typegoose@8.x版本的嵌套数组类型声明语法不规范导致,你当前使用的@prop({type: () => [TopPageAdvantage]})写法不符合8.x版本的类型定义规则,typegoose解析数组类型时无法正确获取到TopPageAdvantage的类原型,因此触发Cannot read property 'prototype' of undefined错误。

修复步骤

直接修改TopPageModel中advantages字段的装饰器配置即可:

// 修改前
@prop({type: () => [TopPageAdvantage]})
advantages:TopPageAdvantage[];

// 修改后
@prop({ type: () => TopPageAdvantage, _id: false })
advantages: TopPageAdvantage[];

补充说明:

  • _id: false是可选配置,用于关闭嵌套子文档自动生成_id字段的默认行为,如果你需要为每个优势项生成唯一id可以删除该配置
  • 如果你没有循环引用的场景,也可以简化写为:
    @prop({ type: TopPageAdvantage, _id: false })
    advantages: TopPageAdvantage[];
    

额外优化建议

你当前代码中tags字段的声明也可以同步调整为符合8.x版本规范的写法,避免后续出现同类报错:

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

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

验证

修改完成后重新启动项目即可正常运行,数组字段的增删改查操作均不受影响。


内容的提问来源于stack exchange,提问作者Epoch Sonder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:21:00