mirror of
https://github.com/vale981/grapher
synced 2025-03-04 17:11:38 -05:00
Fixed reducer issues and made clean-up better
This commit is contained in:
parent
7be6c2f1a6
commit
3c55d75f29
4 changed files with 16 additions and 15 deletions
|
@ -110,14 +110,8 @@ export default class LinkManyMeta extends Link {
|
|||
}
|
||||
};
|
||||
|
||||
console.log(this.linker.mainCollection.findOne(this.object._id));
|
||||
console.log(JSON.stringify(modifier));
|
||||
|
||||
this.linker.mainCollection.update(this.object._id, modifier);
|
||||
|
||||
|
||||
console.log(this.linker.mainCollection.findOne(this.object._id));
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ export default (node, params) => {
|
|||
storeOneResults(node, node.results);
|
||||
|
||||
applyReducers(node, params);
|
||||
cleanReducerLeftovers(node);
|
||||
|
||||
_.each(node.collectionNodes, collectionNode => {
|
||||
cloneMetaChildren(collectionNode, node.results)
|
||||
|
@ -22,6 +21,8 @@ export default (node, params) => {
|
|||
assembleMetadata(collectionNode, node.results)
|
||||
});
|
||||
|
||||
cleanReducerLeftovers(node, node.results);
|
||||
|
||||
removeLinkStorages(node, node.results);
|
||||
applyPostFilters(node);
|
||||
applyPostOptions(node);
|
||||
|
|
|
@ -3,34 +3,42 @@ import dot from 'dot-object';
|
|||
/**
|
||||
* @param root
|
||||
*/
|
||||
export default function cleanReducerLeftovers(root) {
|
||||
export default function cleanReducerLeftovers(root, results) {
|
||||
_.each(root.collectionNodes, node => {
|
||||
if (node.scheduledForDeletion) {
|
||||
root.results.forEach(result => {
|
||||
results.forEach(result => {
|
||||
delete result[node.linkName];
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
_.each(root.collectionNodes, node => {
|
||||
cleanReducerLeftovers(node);
|
||||
let childResults;
|
||||
if (node.isOneResult) {
|
||||
childResults = results.map(result => result[node.linkName]).filter(element => !!element);
|
||||
} else {
|
||||
childResults = _.flatten(results.map(result => result[node.linkName]).filter(element => !!element));
|
||||
}
|
||||
|
||||
cleanReducerLeftovers(node, childResults);
|
||||
});
|
||||
|
||||
_.each(root.fieldNodes, node => {
|
||||
if (node.scheduledForDeletion) {
|
||||
cleanNestedFields(node.name.split('.'), root.results, root);
|
||||
cleanNestedFields(node.name.split('.'), results, root);
|
||||
}
|
||||
});
|
||||
|
||||
_.each(root.reducerNodes, node => {
|
||||
if (node.scheduledForDeletion) {
|
||||
root.results.forEach(result => {
|
||||
results.forEach(result => {
|
||||
delete result[node.name];
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// if we store a field like: 'profile.firstName'
|
||||
// then we need to delete profile: { firstName }
|
||||
// if profile will have empty keys, we need to delete profile.
|
||||
|
@ -62,7 +70,7 @@ function cleanNestedFields(parts, results, root) {
|
|||
.map(result => result[fieldName]),
|
||||
root
|
||||
);
|
||||
|
||||
|
||||
results.forEach(result => {
|
||||
if (_.isObject(result[fieldName]) && _.keys(result[fieldName]).length === 0) {
|
||||
if (fieldName !== '_id') {
|
||||
|
|
|
@ -204,8 +204,6 @@ describe('Hypernova', function() {
|
|||
},
|
||||
}).fetch();
|
||||
|
||||
console.log(JSON.stringify(data, null, 2));
|
||||
|
||||
const tag1Data = _.find(data, doc => doc.name === 'Tag1');
|
||||
const tag2Data = _.find(data, doc => doc.name === 'Tag2');
|
||||
const tag3Data = _.find(data, doc => doc.name === 'Tag3');
|
||||
|
|
Loading…
Add table
Reference in a new issue