client/public/src/models/CollectionModel.js
/**
   * @method query
   * @description Performs the primary search/browse query
   * @param {Object} elementQuery - A simplified query object that more closely matches the
   * 
   * @returns {Promise}
   */
@method query
@description Performs the primary search/browse query
@param {Object} elementQuery - A simplified query object that more closely matches the

@returns {Promise}
@method query @description Performs the primary search / browse query @param { Object } elementQuery - A simplified query object that more closely matches the @returns { Promise }
async query(elementQuery={}){
    let queryObject = this.convertElementQuery(elementQuery);
    if( !queryObject.filters['@type'] ) {
      queryObject.filters['@type'] = QueryUtils.getKeywordFilter(config.defaultTypes, 'or');
    }
    let id = QueryUtils.getQueryId(queryObject);
    let current = this.store.data.queryById[id];
    if( current && current.request ) {
      await current.request;
    } 
    else {
      await this.service.query(id, queryObject);
    }
    return this.store.data.queryById[id];
  }
async query ( elementQuery = { } ) { let queryObject = this . convertElementQuery ( elementQuery ) ; if ( ! queryObject . filters [ '@type' ] ) { queryObject . filters [ '@type' ] = QueryUtils . getKeywordFilter ( config . defaultTypes , 'or' ) ; } let id = QueryUtils . getQueryId ( queryObject ) ; let current = this . store . data . queryById [ id ] ; if ( current && current . request ) { await current . request ; } else { await this . service . query ( id , queryObject ) ; } return this . store . data . queryById [ id ] ; }
@method query
 @description Performs the primary search/browse query
 @param {Object} elementQuery - A simplified query object that more closely matches the
@method query @description Performs the primary search / browse query @param { Object } elementQuery - A simplified query object that more closely matches the
// in no type specified, use our default types