getAll (...args) {
    let opts = {}
    if (this.data) {
      throw utils.err(`${DOMAIN}#getAll`)(500, INDEX_ERR)
    }
    if (!args.length || (args.length === 1 && utils.isObject(args[0]))) {
      this.getData()
      return this
    } else if (args.length && utils.isObject(args[args.length - 1])) {
      opts = args[args.length - 1]
      args.pop()
    }
    const collection = this.collection
    const index = collection.getIndex(opts.index)
    this.data = []
    args.forEach((keyList) => {
      this.data = this.data.concat(index.get(keyList))
    })
    return this
  }
Find the entity or entities that match the provided keyLists.

@example <caption>Get the posts where "status" is "draft" or "inReview".</caption>
const posts = query.getAll('draft', 'inReview', { index: 'status' }).run();

@example <caption>Same as above.</caption>
const posts = query.getAll(['draft'], ['inReview'], { index: 'status' }).run();

@method Query#getAll
@param {...Array} [keyList] Provide one or more keyLists, and all
entities matching each keyList will be retrieved. If no keyLists are
provided, all entities will be returned.
@param {object} [opts] Configuration options.
@param {string} [opts.index] Name of the secondary index to use in the
query. If no index is specified, the main index is used.
@returns {Query} A reference to itself for chaining.
@since 3.0.0