我想在 Mongoose 模式中创建可选字段。
这是我的Log架构。
var logSchema = new Schema({
logType: {
type: String,
enum: ['user', 'lead', 'knowledgecenter'],
required: true
},
userLog: {
name: {
type: String,
required: true
},
userId: {
type: Schema.Types.ObjectId,
required: true
}
},
leadLog: {
title: {
type: String,
required: true
},
leadId: {
type: Schema.Types.ObjectId,
required: true
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想Log使用{logType:'user',userLog:{userId:'5fcJFjslkka4lsdk'}}或将文档插入上述架构中{logType:'lead',leadLog:{leadId:'5fcJFjslkka4lsdk'}}。
但此时猫鼬抛出 ValidatorError: Path required错误。
您可以将其设置required为true仅在需要时才返回 true 的函数,而不是设置为。
这应该可以解决问题:
var logSchema = new Schema({
logType: {
type: String,
enum: ['user', 'lead', 'knowledgecenter'],
required: true
},
userLog: {
name: {
type: String,
required: function() { return this.logType === 'user'; }
},
userId: {
type: Schema.Types.ObjectId,
required: function() { return this.logType === 'user'; }
}
},
leadLog: {
title: {
type: String,
required: function() { return this.logType === 'lead'; }
},
leadId: {
type: Schema.Types.ObjectId,
required: function() { return this.logType === 'lead'; }
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1578 次 |
| 最近记录: |