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.
