@typegoose/typegoose. 使用技巧

使用TypeScript类定义Mongoose模型

typegoose 官方文档
mongoose 操作文档

安装

npm install --save @typegoose/typegoose mongoose

模型定义

class Job {
  @prop()
  public title?: string;

  @prop()
  public position?: string;
}

class Car {
  @prop()
  public model?: string;
}

class User {
  @prop()
  public name?: string;

  @prop({ required: true })
  public age!: number; // This is a single Primitive

  @prop({ type: () => [String] })
  public preferences?: string[]; // This is a Primitive Array

  @prop()
  public mainJob?: Job; // This is a single SubDocument

  @prop({ type: () => Job })
  public jobs?: Job[]; // This is a SubDocument Array

  @prop({ ref: () => Car })
  public mainCar?: Ref<Car>; // This is a single Reference

  @prop({ ref: () => Car })
  public cars?: Ref<Car>[]; // This is a Reference Array
}

模型装饰器的使用

  • @prop() 允许传入的值
declare function prop(options?: BasePropOptions | ArrayPropOptions | MapPropOptions | PropOptionsForNumber | PropOptionsForString | VirtualOptions, kind?: WhatIsIt): PropertyDecorator;
  • @modelOptions({options}) 装饰器的使用
    新增和更新数据的时候自动更新时间
@modelOptions({
 schemaOptions:{
   timestamps: true,
 }
})
原文地址:https://www.cnblogs.com/boyGdm/p/15744092.html