AFAIK-хуки должны быть добавлены в вашу схему до компиляции вашей модели, следовательно, это не сработает.
Однако вы можете сначала создатьсхему для дискриминатора, затем определите хук (-ы) и, наконец, создайте модель дискриминатора из базовой модели и схемы.Обратите внимание, что для ловушек дискриминатора также будут вызываться ловушки базовой схемы.
Более подробная информация в этом разделе документации mongoose:
Дискриминаторы MongooseJS Copy Hooks
В вашем случае, я думаю, это сработает:
const baseOptions = {
discriminatorKey: '__type',
collection: 'users'
}
const Base = mongoose.model('Base', new mongoose.Schema({}, baseOptions));
// [added] create schema for the discriminator first
const OwnerSchema = new mongoose.Schema({
firstName: String,
email: String,
password: String,
});
// [moved here] define the pre save hook for the discriminator schema
OwnerSchema.pre('save', function (next) {
if (!!this.password) {
// ecryption of password
} else {
next();
}
})
// [modified] pass the discriminator schema created previously to create the discriminator "Model"
const Owner = Base.discriminator('Owner', OwnerSchema);
const Staff = Base.discriminator('Staff', new mongoose.Schema({
firstName: String,
}));