gpt4 book ai didi

node.js - 分配给 Mongoose 枚举的 typescript 枚举?

转载 作者:行者123 更新时间:2023-12-01 23:42:46 25 4
gpt4 key购买 nike

我们有一个基于 Typescript 的 NodeJs 项目,它使用了 Mongoose。我们正试图找到一种合适的方法来基于 Typescript 枚举在 Mongoose 模式上定义枚举字段。我确实查看了文档,但找不到任何值得注意的内容。

以枚举为例:

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

和 Mongoose 模式:

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)
}

最佳答案

简答:

您需要使用第二个选项。

此外,type 应该是 String 而不是枚举本身。

transactionType: {
type: String,
default: ETransactionType.Buy,
// no need to use Object.values(ETransactionType) after v5.11
enum: ETransactionType
}

长答案:

第一个在开发时间上足够了,但不会在运行时运行 enum 验证器。这就是为什么您需要有 enum: Object.values(ETransactionType) 部分,它不会自动添加到架构定义中。

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

关于node.js - 分配给 Mongoose 枚举的 typescript 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64759521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com