@@ -449,7 +449,7 @@ Schema.prototype._clone = function _clone(Constructor) {
449
449
s . discriminators = Object . assign ( { } , this . discriminators ) ;
450
450
}
451
451
if ( this . _applyDiscriminators != null ) {
452
- s . _applyDiscriminators = Object . assign ( { } , this . _applyDiscriminators ) ;
452
+ s . _applyDiscriminators = new Map ( this . _applyDiscriminators ) ;
453
453
}
454
454
455
455
s . aliases = Object . assign ( { } , this . aliases ) ;
@@ -621,7 +621,8 @@ Schema.prototype.defaultOptions = function(options) {
621
621
* @api public
622
622
*/
623
623
Schema . prototype . discriminator = function ( name , schema ) {
624
- this . _applyDiscriminators = Object . assign ( this . _applyDiscriminators || { } , { [ name ] : schema } ) ;
624
+ this . _applyDiscriminators = this . _applyDiscriminators || new Map ( ) ;
625
+ this . _applyDiscriminators . set ( name , schema ) ;
625
626
626
627
return this ;
627
628
} ;
@@ -722,18 +723,18 @@ Schema.prototype.add = function add(obj, prefix) {
722
723
for ( const key in val [ 0 ] . discriminators ) {
723
724
schemaType . discriminator ( key , val [ 0 ] . discriminators [ key ] ) ;
724
725
}
725
- } else if ( val [ 0 ] != null && val [ 0 ] . instanceOfSchema && utils . isPOJO ( val [ 0 ] . _applyDiscriminators ) ) {
726
- const applyDiscriminators = val [ 0 ] . _applyDiscriminators || [ ] ;
726
+ } else if ( val [ 0 ] != null && val [ 0 ] . instanceOfSchema && val [ 0 ] . _applyDiscriminators instanceof Map ) {
727
+ const applyDiscriminators = val [ 0 ] . _applyDiscriminators ;
727
728
const schemaType = this . path ( prefix + key ) ;
728
- for ( const disc in applyDiscriminators ) {
729
- schemaType . discriminator ( disc , applyDiscriminators [ disc ] ) ;
729
+ for ( const disc of applyDiscriminators . keys ( ) ) {
730
+ schemaType . discriminator ( disc , applyDiscriminators . get ( disc ) ) ;
730
731
}
731
732
}
732
- else if ( val != null && val . instanceOfSchema && utils . isPOJO ( val . _applyDiscriminators ) ) {
733
- const applyDiscriminators = val . _applyDiscriminators || [ ] ;
733
+ else if ( val != null && val . instanceOfSchema && val . _applyDiscriminators instanceof Map ) {
734
+ const applyDiscriminators = val . _applyDiscriminators ;
734
735
const schemaType = this . path ( prefix + key ) ;
735
- for ( const disc in applyDiscriminators ) {
736
- schemaType . discriminator ( disc , applyDiscriminators [ disc ] ) ;
736
+ for ( const disc of applyDiscriminators . keys ( ) ) {
737
+ schemaType . discriminator ( disc , applyDiscriminators . get ( disc ) ) ;
737
738
}
738
739
}
739
740
} else if ( Object . keys ( val ) . length < 1 ) {
0 commit comments