mongodb 如何在Mongoose NestJS中使用带有动态键的嵌套对象?

u3r8eeie  于 2023-04-20  发布在  Go
关注(0)|答案(1)|浏览(162)

我有模式

// this is collection schema

@Schema()
export class User {
  @Prop()
  age: number;

  @Prop()
  role: string;

  @Prop(/* ???????? */)
  info: Record<string, Info>;
}

//this is schema of nested object
@Schema()
export class Info {
  @Prop()
  name: string;

  @Prop()
  surname: string;
}

我想把数据保存成这样的格式:

{
  age: 20,
  role: 'user',
  info: {
    en: {
      name: 'John'
      surname: 'Smith'
    },
    fr: {
      name: 'Johny'
      surname: 'La`Smith'
    },
  }
}

所以:enfr,etc...是语言名称(此字段是动态,可以有很多语言)

如何在schema上实现??(Prop()info字段应该是什么???)

谢谢!

z9smfwbn

z9smfwbn1#

也许吧

@Prop({ type: Map, of: SchemaTypes.Mixed })
info: Record<string, Info>;

https://mongoosejs.com/docs/schematypes.html#maps
我做的不一样

export interface IMeta {
    [index: string]: string | number | boolean | object | undefined;
}

@Prop({ type: Map })
meta: IMeta;

[index: string]: string其索引签名用于可能数据的通用描述。

相关问题