这是我的计划:
var documentSchema = mongoose.Schema({
'facts': [{
'type': { type: String, required: true, uppercase: true, enum: ['TEXT'], default: 'TEXT'},
'label': { type: String },
'value': { type: String }
}],
'type': { type: String, required: true, uppercase: true, enum: ['TEXT', 'MARKDOWN', 'JSON'], default: 'TEXT'},
'lastModified': { type: Date, required: true, default: Date.now },
'created': { type: Date, required: true, default: Date.now }
}, {
versionKey: 'version'
});
var DocumentModel = mongoose.model('Document', documentSchema);
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式获得枚举:
DocumentModel.schema.path('type').enumValues,
Run Code Online (Sandbox Code Playgroud)
但不是:
DocumentModel.schema.path('facts.type').enumValues,
Run Code Online (Sandbox Code Playgroud)
我得到TypeError:无法读取未定义的属性'enumValues'.我究竟做错了什么?
由于facts是具有嵌入式架构的阵列,因此您需要先访问该架构,然后以与使用相同的方式获取枚举值type.
DocumentModel.schema.path('facts').schema.path('type').enumValues
Run Code Online (Sandbox Code Playgroud)
由于facts是一个对象数组,因此您需要获取如下所示的enumValues:
DocumentModel.schema.path('facts.0.type').enumValues
Run Code Online (Sandbox Code Playgroud)