gpt4 book ai didi

mongodb - 模式定义的 Mongoose OR 运算符

转载 作者:行者123 更新时间:2023-12-04 04:35:28 25 4
gpt4 key购买 nike

Mongoose 是否支持,或者是否有可用的包支持数组中嵌入式模式的多个“选项”?

例如,东西属性只能包含以下两种模式之一:

new Schema({
things: [{
requiredProp: String,
otherProp: Number
}, {
otherOption: Number
}]
});

换句话说,我不想只允许 任何事情 (AKA Schema.Types.Mixed) 要存储在此属性中,但只有这两种可能的定义。

或者,是否存在模式设计建议来避免这个问题?

最佳答案

您应该只在模式的数组类型中定义一个 dict,然后使用 mongoose 模式类型逻辑设置它们是否需要。如果您想执行更多逻辑以确保已设置任一字段,请使用预保存,如下所示:

var MySchema = new Schema({
things: [{
requiredProp: {type: String, required: true},
otherProp: Number,
otherOption: Number,
}]
});

MySchema.pre('save', function(next) {
if (!this.otherProp && !this.otherOption) {
next(new Error('Both otherProp and otherOption can\'t be null'))
} else {
next()
}
})

在保存对象时,如果 otherProp 和 otherOption 都没有设置,它将返回一个错误。

关于mongodb - 模式定义的 Mongoose OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824468/

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