Art*_*nko 2 javascript mongoose typescript-decorator nestjs nestjs-mongoose
当我在 prop 装饰器中使用嵌套的对象数组时:
@Schema()
export class Child {
@Prop()
name: string;
}
@Schema()
export class Parent {
@Prop({type: [Child], _id: false}) // don't need `_id` for nested objects
children: Child[];
}
export const ParentSchema = SchemaFactory.createForClass(Parent);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: Invalid schema configuration: `Child` is not a valid type within the array `children`.
Run Code Online (Sandbox Code Playgroud)
如果我需要使用@Prop({_id: false})(以保持嵌套模式独立),我该如何解决这个问题?
如果我们更改 prop 装饰器,@Prop([Child])它就可以工作,但是我们需要禁用_id嵌套对象:
@Schema({_id: false})
export class Child {
@Prop()
name: string;
}
@Schema()
export class Parent {
@Prop([Child])
children: Child[];
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们不会有通用的 Child 对象,我们不会将它们用作独立的架构。
另一种方法是创建Child架构并在 中使用它@Prop({type: [childSchema], _id: false}),但这看起来像是一种开销。
小智 5
描述您的情况的一个简单示例是:
import { Document, Schema as MongooseSchema } from 'mongoose';
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
class GuildMember {
@Prop({ type: String, required: true, lowercase: true })
_id: string;
@Prop({ required: true })
id: number;
@Prop({ required: true })
rank: number;
}
@Schema({ timestamps: true })
export class Guild extends Document {
@Prop({ type: String, required: true, lowercase: true })
_id: string;
@Prop({ type: MongooseSchema.Types.Array})
members: GuildMember[]
}
export const GuildsSchema = SchemaFactory.createForClass(Guild);
Run Code Online (Sandbox Code Playgroud)
因为在嵌套模式中,您没有在 prop 装饰器内部定义类型,而只是告诉该字段是一个数组并使用 TypeScript 验证类型
| 归档时间: |
|
| 查看次数: |
7715 次 |
| 最近记录: |