在 Mongoose 中,你可以使用 @Prop
装饰器存储复杂的数据,例如嵌套对象或嵌套数组。你可以定义复杂数据类型,然后将其用作字段的类型。以下是一些示例:
1. 嵌套对象:
你可以在模式中定义一个嵌套对象类型,然后将其用作字段的类型:
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
@Schema()
export class Address {
@Prop()
street: string;
@Prop()
city: string;
@Prop()
postalCode: string;
}
@Schema()
export class User extends Document {
@Prop()
name: string;
@Prop({ type: Address }) // 使用嵌套对象类型作为字段类型
address: Address;
// 其他属性...
}
export const UserSchema = SchemaFactory.createForClass(User);
在上面的示例中,我们定义了一个嵌套的 Address
类型,并将其用作 User
模型的 address
字段的类型。
2. 嵌套数组:
你还可以将嵌套的数组类型用作字段的类型:
@Schema()
export class User extends Document {
@Prop()
name: string;
@Prop([{ type: String }]) // 使用嵌套字符串数组类型作为字段类型
hobbies: string[];
// 其他属性...
}
在这个示例中,User
模型的 hobbies
字段是一个包含字符串的数组。
3. 嵌套混合类型:
你可以将嵌套对象和嵌套数组组合在一起,以存储更复杂的数据结构:
@Schema()
export class UserProfile {
@Prop()
bio: string;
@Prop([{ type: String }]) // 嵌套字符串数组
interests: string[];
}
@Schema()
export class User extends Document {
@Prop()
name: string;
@Prop({ type: UserProfile }) // 嵌套 UserProfile 对象
profile: UserProfile;
// 其他属性...
}
在这个示例中,User
模型的 profile
字段是一个嵌套的 UserProfile
对象,其中包含 bio
字符串和 interests
字符串数组。
这些示例演示了如何使用 Mongoose 的 @Prop
装饰器存储复杂的数据类型,你可以根据你的数据结构需求定义适合的嵌套类型。