0

我的数组模式的定义有问题。所以基本上,我想要实现的是一个具有名为游戏的属性的单用户模型,它包含用户正在玩的一系列游戏。问题是我将游戏定义为枚举:

module Constants {
    export enum Games {
        LOL = 'League Of Legends',
    }
}

导出{常量};

现在,当我尝试将它附加到这样的模式模型时:

@arrayProp({ required: true, items: Constants.Games })
games: Constants.Games[];

我收到一个错误(在成功编译之后,就在服务器启动之前)

^ const instance = new Type();
TypeError: Type is not a constructor
    at baseProp (C:\Users\Borys\Desktop\lft\backend\node_modules\typegoose\lib\prop.js:114:22)
    at C:\Users\Borys\Desktop\lft\backend\node_modules\typegoose\lib\prop.js:177:9
    at DecorateProperty (C:\Users\Borys\Desktop\lft\backend\node_modules\reflect-metadata\Reflect.js:553:33)
    at Object.decorate (C:\Users\Borys\Desktop\lft\backend\node_modules\reflect-metadata\Reflect.js:123:24)
    at __decorate (C:\Users\Borys\Desktop\lft\backend\build\dataModel\User.js:4:92)
    at Object.<anonymous> (C:\Users\Borys\Desktop\lft\backend\build\dataModel\User.js:64:1)

我已经阅读了一些有关此错误的信息,但它与 items/itemsRef 的 required 选项有关,我尝试删除 required、使用枚举、甚至使用 itemsRef 并与不同的文档集相关,但这些都不适合我。

任何人都可以帮助/联系?

4

2 回答 2

1

问题是,您不能将枚举用作运行时猫鼬类型,所以我建议使用

@prop({ required: true, type: String, enum: Constants.Games })
games: Constants.Games[];
  • type用于设置类型(即string)(此选项可以省略 - 感谢反射)
  • enum用于设置要验证的枚举
于 2020-08-17T02:34:02.420 回答
0
@arrayProp({ required: true, items: String })
games: Constants.Games[];

是解决这个问题的方法。

如果有人能澄清并告诉我更多关于为什么我不应该在 items 属性中使用枚举,我将不胜感激。

于 2020-08-16T11:24:39.180 回答