text: import createSearchFilters from '../../links/lib/createSearchFilters';
  import cleanObjectForMetaFilters from './lib/cleanObjectForMetaFilters';
  import sift from 'sift';
  
  export default (childCollectionNode, {limit, skip, metaFilters}) => {
      const parent = childCollectionNode.parent;
      const linker = childCollectionNode.linker;
  
      const strategy = linker.strategy;
      const isSingle = linker.isSingle();
      const isMeta = linker.isMeta();
      const fieldStorage = linker.linkStorageField;
  
      // cleaning the parent results from a child
      // this may be the wrong approach but it works for now
      if (isMeta && metaFilters) {
          const metaFiltersTest = sift(metaFilters);
          _.each(parent.results, parentResult => {
              cleanObjectForMetaFilters(parentResult, fieldStorage, metaFiltersTest);
          })
      }
  
      _.each(parent.results, result => {
          let data = assembleData(childCollectionNode, result, {
              fieldStorage, strategy, isSingle
          });
  
          result[childCollectionNode.linkName] = filterAssembledData(data, {limit, skip})
      });
  }
  
  function filterAssembledData(data, {limit, skip}) {
      if (limit) {
          return data.slice(skip, limit);
      }
  
      return data;
  }
  
  function assembleData(childCollectionNode, result, {fieldStorage, strategy}) {
      const filters = createSearchFilters(result, fieldStorage, strategy, false);
  
      return sift(filters, childCollectionNode.results);
  }
  