From e2f1c50091371c2d294e37263161d3408aab874c Mon Sep 17 00:00:00 2001 From: Kassian Sun Date: Wed, 22 Jan 2025 14:30:59 +0800 Subject: [PATCH] refactor: reorganize transformInteriorValue This code was checking a constantly true condition value !== CannotTransform, that's why the code was not properly handling nested structure properly, The code introduced by #8446 fixed this logic, by introducing another duplicated piece of code. This commit simplifies the logic here to reflect the original purpose. --- src/Adapters/Storage/Mongo/MongoTransform.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index 336d9affc9..b867f8d109 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -187,17 +187,15 @@ const transformInteriorValue = restValue => { } // Handle atomic values var value = transformInteriorAtom(restValue); - if (value !== CannotTransform) { - if (value && typeof value === 'object') { - if (value instanceof Date) { - return value; - } - if (value instanceof Array) { - value = value.map(transformInteriorValue); - } else { - value = mapValues(value, transformInteriorValue); - } - } + + // If cannot transform, return it + // transformInteriorAtom doesn't return CannotTransform, just in case + if (value === CannotTransform) { + return value; + } + + // If the value was mutated (thus transformed), return it + if (value !== restValue) { return value; }