Noiseless Peaceful Morning

    hapi-query-filters

    1.0.1 • Public • Published

    Hapi Query Filter

    Build Status Coverage Status NPM version Downloads

    The purpose of this plugin is to convert query parameters into a single filter object that is accessible via request.query.filter.

    For example: ?first_name=John&last_name=Doe would create a request.query that looks like

    {
      filter: {
        first_name: 'John',
        last_name: 'Doe'
      }
    }

    Registering the Plugin

    var Hapi = require('hapi');
    var server = new Hapi.Server();
     
    server.register([
      {
        register: require('hapi-query-filter'),
        options: {
          ignoredKeys: ['count', 'offset'], // Array of query parameters not to convert to filter object
          defaultEnabled: true // if true plugin will be used on all routes
        }
      }
    ], function (err) {
      // An error will be available here if anything goes wrong
    });

    Ignoring Keys

    You can ignore keys to have them stay at the root level of request.query. A configuration of:

    var Hapi = require('hapi');
    var server = new Hapi.Server();
     
    server.register([
      {
        register: require('hapi-query-filter'),
        options: {
          ignoredKeys: ['count', 'offset'], // Array of query parameters not to convert to filter object
          defaultEnabled: true // if true plugin will be used on all routes
        }
      }
    ], function (err) {
      // An error will be available here if anything goes wrong
    });

    Will cause a request like ?first_name=John&last_name=Doe&count=10&offset=0 to create a request.query that looks like:

    {
      count: 10,
      offset: 0,
      filter: {
        first_name: 'John', 
        last_name: 'Doe'
      }
    }

    Enabling at the Route Level

    If defaultEnabled: false you will need to enable the plugin an a per-route basis by doing the following:

    var Hapi = require('hapi');
    var server = new Hapi.Server();
     
    server.register([
      {
        register: require('hapi-query-filter')
      }
    ], function (err) {
      // An error will be available here if anything goes wrong
    });
     
    server.route({
      method: 'GET',
      path: '/test',
      config: {
        handler: function (request, reply) { ... },
        plugins: {
          queryFilter: {
            enabled: true,
            ignoredKey: ['count', 'offset'], // Array will be concatenated with the ignoredKeys set at register
            params: ['test_param'] // Array of request.params that will be put into filter object
          }
        }
      }
    })

    Keywords

    Install

    npm i hapi-query-filters

    DownloadsWeekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • lob