如何从mongoose模式中获取枚举值?

Jus*_*808 5 mongoose

这是我的计划:

  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'.我究竟做错了什么?

Jas*_*ust 5

由于facts是具有嵌入式架构的阵列,因此您需要先访问该架构,然后以与使用相同的方式获取枚举值type.

DocumentModel.schema.path('facts').schema.path('type').enumValues
Run Code Online (Sandbox Code Playgroud)


Sar*_*air 3

由于facts是一个对象数组,因此您需要获取如下所示的enumValues:

DocumentModel.schema.path('facts.0.type').enumValues
Run Code Online (Sandbox Code Playgroud)