Skip to content

Commit f087e8f

Browse files
committed
perf(document): remove some more unnecessary cloning in $toObject() re: #14394
1 parent e910cb7 commit f087e8f

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

lib/document.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3780,7 +3780,7 @@ Document.prototype.$__handleReject = function handleReject(err) {
37803780
*/
37813781

37823782
Document.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 } : {};
@@ -3865,27 +3865,25 @@ Document.prototype.$toObject = function(options, json) {
38653865
options.minimize = _minimize;
38663866

38673867
cloneOptions._parentOptions = options;
3868-
cloneOptions._skipSingleNestedGetters = false;
3869-
3870-
const gettersOptions = Object.assign({}, cloneOptions);
3871-
gettersOptions._skipSingleNestedGetters = true;
38723868

3869+
cloneOptions._skipSingleNestedGetters = false;
38733870
// remember the root transform function
38743871
// to save it from being overwritten by sub-transform functions
38753872
const originalTransform = options.transform;
38763873

38773874
let ret = clone(this._doc, cloneOptions) || {};
38783875

3876+
cloneOptions._skipSingleNestedGetters = true;
38793877
if (options.getters) {
3880-
applyGetters(this, ret, gettersOptions);
3878+
applyGetters(this, ret, cloneOptions);
38813879

38823880
if (options.minimize) {
38833881
ret = minimize(ret) || {};
38843882
}
38853883
}
38863884

38873885
if (options.virtuals || (options.getters && options.virtuals !== false)) {
3888-
applyVirtuals(this, ret, gettersOptions, options);
3886+
applyVirtuals(this, ret, cloneOptions, options);
38893887
}
38903888

38913889
if (options.versionKey === false && this.$__schema.options.versionKey) {

0 commit comments

Comments
 (0)