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

时间:2014-03-07 05:52:40

标签: 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);

我可以使用以下内容获取枚举:

DocumentModel.schema.path('type').enumValues,

但不是:

DocumentModel.schema.path('facts.type').enumValues,

我得 TypeError:无法读取未定义的属性'enumValues'。我做错了什么?

2 个答案:

答案 0 :(得分:5)

由于facts是一个包含嵌入式架构的数组,因此您需要先访问该架构,然后以与type相同的方式获取枚举值。

DocumentModel.schema.path('facts').schema.path('type').enumValues

答案 1 :(得分:1)

由于事实是一个对象数组,你需要获得如下的enumValues:

DocumentModel.schema.path('facts.0.type').enumValues