gpt4 book ai didi

node.js - 如何允许 Mongoose 模式中的枚举字段为空?

转载 作者:行者123 更新时间:2023-12-04 11:57:09 26 4
gpt4 key购买 nike

我正在尝试使用 在 MongoDB 中创建一个新对象 Mongoose .
这是我的 Mongoose 模式:

const UsersSchema = new Schema<BaseUser>(
{
email: {
type: Schema.Types.String,
index: true,
required: true,
unique: true,
},
someKey: {
type: Schema.Types.String,
default: null,
required: false,
enum: Object.values(SomeEnumObj),
}
},
{
timestamps: true,
}
);

enum SomeEnumObj = {
TEST = "TEST",
}
当我尝试使用以下方法创建新用户时:
model.create({
email: 'some@email.com',
}).exec()
抛出以下错误:
users validation failed: someKey: `null` is not a valid enum value for path `someKey`., 
我能够通过设置来解决这个问题:
enum: [...Object.values(SomeEnumObj), null]
但是我想知道是否有更好或更正确的方法来执行此操作,因为我的解决方案感觉有点笨拙,并且我希望如果我将默认值设置为 null,验证器将允许它为 null。

最佳答案

基于 this issue我也没有找到任何合适的解决方案,因为这也是我的问题。我相信没有必要添加 null 作为 默认值 (default: null)解决问题。
您只能设置 nullable: true在您的架构中并将其编写为更具可读性,如下所示:

Object.values(SomeEnumObj).concat([null])
您的架构:
...

someKey: {
type: Schema.Types.String,
nullable: true
enum: Object.values(SomeEnumObj).concat([null]),
}

...

关于node.js - 如何允许 Mongoose 模式中的枚举字段为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63685706/

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