分配给猫鼬枚举的打字稿枚举?

时间:2020-11-09 21:29:46

标签: node.js mongodb typescript mongoose enums

我们有一个使用Mongoose的基于Typescript的NodeJs项目。我们正在尝试基于Typescript枚举找到在Mongoose模式上定义枚举字段的适当方法。我确实浏览了文档,但找不到任何注意事项。

以列举枚举为例:

enum ETransactionType {
    Buy = 'buy',
    Sell = 'sell',
}

和猫鼬模式:

const TransactionSchema = new Schema({
   user: { type: Schema.Types.ObjectId, ref: 'User' },
   product: { type: Schema.Types.ObjectId, ref: 'Product' },
   transactionType: {
      type: ETransactionType,
      default: ETransactionType.Buy
   }
});

足够了吗?还是我们应该从TS枚举中提取值,例如:

transactionType: {
   type: ETransactionType,
   default: ETransactionType.Buy,
   enum: Object.values(ETransactionType)
}

1 个答案:

答案 0 :(得分:1)

简短答案:

您需要使用第二个选项。

长答案:

第一个就开发时间而言已足够,但不会在运行时中运行enum验证程序。这就是为什么您需要拥有enum: Object.values(ETransactionType)部分,而不会将其自动添加到架构定义的原因。

此外,值得注意的是,猫鼬当前不支持TypeScript we're planning to have official TypeScript definitions in version 5.11