mongodb - NestJS + Mongoose 架構與自訂 TypeScript 類型
我正在嘗試使用 nestjs/mongoose 裝飾器,從以下類別創建一個 Mongo Schema:
@Schema()
export class Constraint {
@Prop()
reason: string;
@Prop()
status: Status;
@Prop()
time: number;
}
問題是 Status 定義如下:
export type Status = boolean | 'pending';
我無法弄清楚要傳給 status 的 prop 裝飾器什麼,因為我收到了以下錯誤:
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
而 { type: Status } 不起作用,因為 Status 是一個 type,而不是一個 Class。
答案#1
我遇到同樣的問題,感謝 @sven-stam,正如他在這裡提到的,我這樣實現了 Mixed 類型:
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'
}
答案#2
由於 status 可以是布林值或字串,所以它是一個混合型別。因此你可以考慮將你的型別設為 Mixed
