2016-08-19 3 views
0

Я создаю плагин и вам нужно указать атрибуты для одного из полей коллекции поддокументов. Кто-то сказал, что statics официальный способ сделать это.Как указать атрибуты схемы для субдокумента mongoose?

Таким образом, вместо того, чтобы ...

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : { type: [ personSchema ], minLength: 1, maxLength: 10 } 
}); 

... было бы это ...

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : [ personSchema ] 
}); 
familySchema.static('minLength', 1); 
familySchema.static('maxLength', 10); 

я понимаю, нет minLength или maxLength. Плагин справится с этим.

Я просматривал документы и не могу найти ничего, что упоминает официальное . Есть ли преимущество одного против другого?

ответ

0

Вы правы, нет такой вещи, как minLength для массива ref. Вы должны использовать пользовательскую проверку

var validateFamilyLength = function (members) { 
    return members.length > 1 && members.length < 10; 
}; 

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : { 
     type: [personSchema], 
     validate: [validateFamilyLength, 'Not valid members count'] 
    } 
}); 

Но я настоятельно рекомендую использовать вместо рефов

var familySchema = mongoose.Schema({ 
    surName : { type: String }, 
    members : [{ 
     type: mongoose.Schema.ObjectId, 
     ref: 'Person', 
     validate: [validateFamilyLength, 'Not valid members count'] 
    }] 
}); 
+0

Извините за путаницу. Я сформулировал вопрос для ясности. Я пытаюсь определить способ _preferred_ объявления этих атрибутов. –

Смежные вопросы