function findPage(unfilteredOptions) {
        var options = this.filterOptions(unfilteredOptions, 'findPage'),
            itemCollection = this.forge(),
            requestedColumns = options.columns;

        // Set this to true or pass ?debug=true as an API option to get output
        itemCollection.debug = options.debug && config.get('env') !== 'production';

        // Add Filter behaviour
        itemCollection.applyDefaultAndCustomFilters(options);

        // Ensure only valid fields/columns are added to query
        // and append default columns to fetch
        if (options.columns) {
            options.columns = _.intersection(options.columns, this.prototype.permittedAttributes());
            options.columns = _.union(options.columns, this.prototype.defaultColumnsToFetch());
        }

        if (options.order) {
            options.order = this.parseOrderOption(options.order, options.withRelated);
        } else if (this.orderDefaultRaw) {
            options.orderRaw = this.orderDefaultRaw(options);
        } else if (this.orderDefaultOptions) {
            options.order = this.orderDefaultOptions();
        }

        return itemCollection.fetchPage(options).then(function formatResponse(response) {
            // Attributes are being filtered here, so they are not leaked into calling layer
            // where models are serialized to json and do not do more filtering.
            // Re-add and pick any computed properties that were stripped before fetchPage call.
            const data = response.collection.models.map((model) => {
                if (requestedColumns) {
                    model.attributes = _.pick(model.attributes, requestedColumns);
                    model._previousAttributes = _.pick(model._previousAttributes, requestedColumns);
                }

                return model;
            });

            return {
                data: data,
                meta: {pagination: response.pagination}
            };
        });
    }
function findPage(unfilteredOptions) {
        var options = this.filterOptions(unfilteredOptions, 'findPage'),
            itemCollection = this.forge(),
            requestedColumns = options.columns;

        // Set this to true or pass ?debug=true as an API option to get output
        itemCollection.debug = options.debug && config.get('env') !== 'production';

        // Add Filter behaviour
        itemCollection.applyDefaultAndCustomFilters(options);

        // Ensure only valid fields/columns are added to query
        // and append default columns to fetch
        if (options.columns) {
            options.columns = _.intersection(options.columns, this.prototype.permittedAttributes());
            options.columns = _.union(options.columns, this.prototype.defaultColumnsToFetch());
        }

        if (options.order) {
            options.order = this.parseOrderOption(options.order, options.withRelated);
        } else if (this.orderDefaultRaw) {
            options.orderRaw = this.orderDefaultRaw(options);
        } else if (this.orderDefaultOptions) {
            options.order = this.orderDefaultOptions();
        }

        return itemCollection.fetchPage(options).then(function formatResponse(response) {
            // Attributes are being filtered here, so they are not leaked into calling layer
            // where models are serialized to json and do not do more filtering.
            // Re-add and pick any computed properties that were stripped before fetchPage call.
            const data = response.collection.models.map((model) => {
                if (requestedColumns) {
                    model.attributes = _.pick(model.attributes, requestedColumns);
                    model._previousAttributes = _.pick(model._previousAttributes, requestedColumns);
                }

                return model;
            });

            return {
                data: data,
                meta: {pagination: response.pagination}
            };
        });
    }
function findPage ( unfilteredOptions ) { var options = this . filterOptions ( unfilteredOptions , 'findPage' ) , itemCollection = this . forge ( ) , requestedColumns = options . columns ; // Set this to true or pass ?debug=true as an API option to get output itemCollection . debug = options . debug && config . get ( 'env' ) !== 'production' ; // Add Filter behaviour itemCollection . applyDefaultAndCustomFilters ( options ) ; // Ensure only valid fields/columns are added to query // and append default columns to fetch if ( options . columns ) { options . columns = _ . intersection ( options . columns , this . prototype . permittedAttributes ( ) ) ; options . columns = _ . union ( options . columns , this . prototype . defaultColumnsToFetch ( ) ) ; } if ( options . order ) { options . order = this . parseOrderOption ( options . order , options . withRelated ) ; } else if ( this . orderDefaultRaw ) { options . orderRaw = this . orderDefaultRaw ( options ) ; } else if ( this . orderDefaultOptions ) { options . order = this . orderDefaultOptions ( ) ; } return itemCollection . fetchPage ( options ) . then ( function formatResponse ( response ) { // Attributes are being filtered here, so they are not leaked into calling layer // where models are serialized to json and do not do more filtering. // Re-add and pick any computed properties that were stripped before fetchPage call. const data = response . collection . models . map ( ( model ) => { if ( requestedColumns ) { model . attributes = _ . pick ( model . attributes , requestedColumns ) ; model . _previousAttributes = _ . pick ( model . _previousAttributes , requestedColumns ) ; } return model ; } ) ; return { data : data , meta : { pagination : response . pagination } } ; } ) ; }
### Find Page
Find results by page - returns an object containing the
information about the request (page, limit), along with the
info needed for pagination (pages, total).

**response:**

{
data: [
{...}, ...
],
meta: {
pagination: {
page: __,
limit: __,
pages: __,
total: __
}
}
}

@param {Object} unfilteredOptions
### Find Page Find results by page - returns an object containing the information about the request ( page limit ) along with the info needed for pagination ( pages total ) .
Find a page of records in the database.