diff --git a/lib/query/lib/prepareForDelivery.js b/lib/query/lib/prepareForDelivery.js index 9422748b..6b1d50ed 100755 --- a/lib/query/lib/prepareForDelivery.js +++ b/lib/query/lib/prepareForDelivery.js @@ -104,26 +104,30 @@ export function removeLinkStorages(node, sameLevelResults) { const [root, ...nested] = collectionNode.linkStorageField.split('.'); const removeFromResult = (result, removeEmptyRoot = false) => { - if (isSingle) { - dot.pick(collectionNode.linkStorageField, result, true); - if (removeEmptyRoot && nested.length > 0 && _.isEmpty(result[root])) { - delete result[root]; - } - } - else { - if (nested.length > 0) { - const arr = result[root] || []; - if (_.isArray(arr)) { - arr.forEach(obj => dot.pick(nested.join('.'), obj, true)); - if (removeEmptyRoot && nested.length > 0 && arr.every(obj => _.isEmpty(obj))) { - delete result[root]; - } + const parentBody = collectionNode.parent ? collectionNode.parent.body : {}; + if (!(root in parentBody)) { + if (isSingle) { + dot.pick(collectionNode.linkStorageField, result, true); + if (removeEmptyRoot && nested.length > 0 && _.isEmpty(result[root])) { + delete result[root]; } } else { - delete result[collectionNode.linkStorageField]; + if (nested.length > 0) { + const arr = result[root] || []; + if (_.isArray(arr)) { + arr.forEach(obj => dot.pick(nested.join('.'), obj, true)); + if (removeEmptyRoot && nested.length > 0 && arr.every(obj => _.isEmpty(obj))) { + delete result[root]; + } + } + } + else { + delete result[collectionNode.linkStorageField]; + } } } + }; if (collectionNode.isVirtual) {