@@ -3780,7 +3780,7 @@ Document.prototype.$__handleReject = function handleReject(err) {
37803780 */ 
37813781
37823782Document . prototype . $toObject  =  function ( options ,  json )  { 
3783-   let  defaultOptions  =  { 
3783+   const  defaultOptions  =  { 
37843784    transform : true , 
37853785    flattenDecimals : true 
37863786  } ; 
@@ -3793,7 +3793,7 @@ Document.prototype.$toObject = function(options, json) {
37933793  const  schemaOptions  =  this . $__schema  &&  this . $__schema . options  ||  { } ; 
37943794  // merge base default options with Schema's set default options if available. 
37953795  // `clone` is necessary here because `utils.options` directly modifies the second input. 
3796-   defaultOptions   =   {  ... defaultOptions ,  ... baseOptions ,  ... schemaOptions [ path ]   } ; 
3796+   Object . assign ( defaultOptions ,  baseOptions ,  schemaOptions [ path ] ) ; 
37973797
37983798  // If options do not exist or is not an object, set it to empty object 
37993799  options  =  utils . isPOJO ( options )  ? {  ...options  }  : { } ; 
@@ -3830,21 +3830,18 @@ Document.prototype.$toObject = function(options, json) {
38303830  // `clone()` will recursively call `$toObject()` on embedded docs, so we 
38313831  // need the original options the user passed in, plus `_isNested` and 
38323832  // `_parentOptions` for checking whether we need to depopulate. 
3833-   const  cloneOptions  =  Object . assign ( { } ,   options ,   { 
3833+   const  cloneOptions  =  { 
38343834    _isNested : true , 
38353835    json : json , 
38363836    minimize : _minimize , 
38373837    flattenMaps : flattenMaps , 
38383838    flattenObjectIds : flattenObjectIds , 
3839-     _seen : ( options  &&  options . _seen )  ||  new  Map ( ) 
3840-   } ) ; 
3841- 
3842-   if  ( utils . hasUserDefinedProperty ( options ,  'getters' ) )  { 
3843-     cloneOptions . getters  =  options . getters ; 
3844-   } 
3845-   if  ( utils . hasUserDefinedProperty ( options ,  'virtuals' ) )  { 
3846-     cloneOptions . virtuals  =  options . virtuals ; 
3847-   } 
3839+     _seen : ( options  &&  options . _seen )  ||  new  Map ( ) , 
3840+     _calledWithOptions : options . _calledWithOptions , 
3841+     virtuals : options . virtuals , 
3842+     getters : options . getters , 
3843+     depopulate : options . depopulate 
3844+   } ; 
38483845
38493846  const  depopulate  =  options . depopulate  || 
38503847    ( options . _parentOptions  &&  options . _parentOptions . depopulate  ||  false ) ; 
@@ -3855,33 +3852,35 @@ Document.prototype.$toObject = function(options, json) {
38553852  } 
38563853
38573854  // merge default options with input options. 
3858-   options  =  {  ...defaultOptions ,  ...options  } ; 
3855+   for  ( const  key  of  Object . keys ( defaultOptions ) )  { 
3856+     if  ( options [ key ]  ==  null )  { 
3857+       options [ key ]  =  defaultOptions [ key ] ; 
3858+     } 
3859+   } 
38593860  options . _isNested  =  true ; 
38603861  options . json  =  json ; 
38613862  options . minimize  =  _minimize ; 
38623863
38633864  cloneOptions . _parentOptions  =  options ; 
3864-   cloneOptions . _skipSingleNestedGetters  =  false ; 
3865- 
3866-   const  gettersOptions  =  Object . assign ( { } ,  cloneOptions ) ; 
3867-   gettersOptions . _skipSingleNestedGetters  =  true ; 
38683865
3866+   cloneOptions . _skipSingleNestedGetters  =  false ; 
38693867  // remember the root transform function 
38703868  // to save it from being overwritten by sub-transform functions 
38713869  const  originalTransform  =  options . transform ; 
38723870
38733871  let  ret  =  clone ( this . _doc ,  cloneOptions )  ||  { } ; 
38743872
3873+   cloneOptions . _skipSingleNestedGetters  =  true ; 
38753874  if  ( options . getters )  { 
3876-     applyGetters ( this ,  ret ,  gettersOptions ) ; 
3875+     applyGetters ( this ,  ret ,  cloneOptions ) ; 
38773876
38783877    if  ( options . minimize )  { 
38793878      ret  =  minimize ( ret )  ||  { } ; 
38803879    } 
38813880  } 
38823881
38833882  if  ( options . virtuals  ||  ( options . getters  &&  options . virtuals  !==  false ) )  { 
3884-     applyVirtuals ( this ,  ret ,  gettersOptions ,  options ) ; 
3883+     applyVirtuals ( this ,  ret ,  cloneOptions ,  options ) ; 
38853884  } 
38863885
38873886  if  ( options . versionKey  ===  false  &&  this . $__schema . options . versionKey )  { 
0 commit comments