MongoDB Mon goose Наследование схемы - значения жесткого кодирования - PullRequest
0 голосов
/ 11 марта 2020

Допустим, у меня есть следующая схема Mon goose:

  // generic Animal Schema
const AnimalSchema = new Schema(
  {
    name: { type:String, required:true },
    description: { type:String, required:true },
    sound: { type:String, required:true, set: sound=>{return 'This animal says ' + sound} }
  }, {discriminatorKey: 'type'}
);
const Animal = mongoose.model('Animal', AnimalSchema);

  // specific Cat Schema extends AnimalSchema 
const CatSchema = new Schema(
  {
    claw_length: {type:Number, required:true},
    sound: 'Meow!'   //<-------------------------- Hardcode parent value
  }, {discriminatorKey: 'type'}
);
const Cat = Animal.discriminator('Cat', CatSchema);

Как я могу жестко закодировать / переопределить значение родительской схемы? Если есть несколько способов, каков наилучший способ сделать это?

Также важно, чтобы значение анализировалось, как если бы оно поступало нормально. Я попытался прочитать свойство: sound: {type:String, default:'Meow!' set: sound=>{return 'This animal says ' + sound}}, чтобы оно по умолчанию было «Мяу!» когда не указано, но это не будет правильно выполнять пользовательские методы получения и установки. Я бы хотел, чтобы конечное значение, хранящееся в базе данных, было: 'This animal says Meow!', но когда я делаю это таким образом, я получаю 'Meow!'.

...