Vyhledávání na webu

mongodb - NestJS + Mongoose schéma s vlastním TypeScriptem typem


Snažím se vytvořit Mongo Schema pomocí dekorátorů nestjs/mongoose z následující třídy:

@Schema()
export class Constraint {
  @Prop()
  reason: string;

  @Prop()
  status: Status;

  @Prop()
  time: number;
}

Problém je v tom, že Status je definován následovně:

export type Status = boolean | 'pending';

A nemohu přijít na to, co předat dekorátoru prop u status, protože dostávám následující chybu:

Error: Cannot determine a type for the "Constraint.status" field (union/intersection/ambiguous type was used). Make sure your property is decorated with a "@Prop({ type: TYPE_HERE })" decorator

a { type: Status } nefunguje, protože Status je type a ne Class.

Odpověď č. 1

Měl jsem stejný problém a díky @sven-stam, jak zde zmínil, jsem implementoval typ Mixed takto:

import { Prop, Schema } from '@nestjs/mongoose';
import mongoose, {
  HydratedDocument,
  Schema as MongooseSchema,
} from 'mongoose';

export type UserDocument = HydratedDocument<User>;

@Schema()
class User {
  @Prop()
  username: string

  @Prop({default: false, type: MongooseSchema.Types.Mixed })
  paid: boolean | 'waiting'
}

Odpověď č. 2

Jelikož status může být boolean nebo string, jedná se o smíšený typ. Takže můžete zvážit nastavení vašeho typu na Mixed.

Související články