我有一个包含枚举的模式:
export interface IGameMapModel extends IGameMap, Document {}
export const gameMapSchema: Schema = new Schema({
name: { type: String, index: { unique: true }, required: true },
type: { type: String, enum: CUtility.enumToArray(GameMode) }
});
export const GameMap: Model<IGameMapModel> = model<IGameMapModel>('GameMap', gameMapSchema);
GameMap
是一个枚举类型。
首先,我需要将枚举转换为字符串数组才能与模式一起使用。
其次,在模式创建期间,我希望直接使用枚举值。
new GameMap({
name: 'Test',
type: GameMode.ASSAULT
});
返回 ValidationError:type:“1”不是路径“type”的有效枚举值。
由于我在模型枚举属性中设置了字符串数组,因此我不确定这是否实际可行。
我的想法是在模式创建过程中创建某种类型转换。这样做可以使用mongoose吗?还是我需要创建对象创建的某种帮助程序?
CUtility.enumToArray(GameMode)
返回['ASSAULT','MORE']
。我知道为什么会返回 TypeError,但我想知道是否有一种方法可以使用new Test({type: GameMode.ASSAULT})
创建一个对象,并且 mongoose 或其他帮助方法将其转换为字符串,这样我就不必每次都使用GameMode[GM.Assault]
了。 - Jannis Lehmann