Допустим, у меня есть следующая схема 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!'
.