strong-params

    1.0.0 • Public • Published

    strong-params

    Build Status NPM version

    Rails-style implementation of strong parameters. It supports Express, Koa and also can be used as standalone. The middleware adds the parameters object to the Express request (or ctx.parameters for Koa context) which returns an object, built from query string, request body and route params data. The returned object has some useful methods allows for data requiring and filtering.

    Notice

    The implementation of strong parameters was previously forked from koa-strong-params but now has it's own implementation. Along with this change only, except and merge methods have been dropped from the API as they do not exist in Rails Strong Parameters API.

    Installation

    Install the npm package.

    npm install strong-params --save
    

    Attach the middleware.

    Express
    var express = require('express')
    var params = require('strong-params')
    app.use(params.expressMiddleware())
    Koa
    var koa = require('koa')
    var params = require('strong-params')
    var app = new koa()
    app.use(params.koaMiddleware())

    Usage

    Get strong parameters

    Express
    app.use(function (req, res, next) {
      var params = req.parameters
    })
    Koa
    app.use(function (ctx, next) {
      var params = ctx.parameters
    })
    Standalone
    var Parameters = require('strong-params').Parameters
    var params = Parameters({
      id: '13',
      name: 'Bob',
      age: '13',
      hobbies: ['skydiving', 'football', 'photographing'],
      address: {
        country: 'US',
        street: '261 West'
      },
      contacts: [
        {
          type: 'e-mail',
          value: 'bob@random.rnd'
        }, {
          type: 'mobile',
          value: '+123987456'
        }
      ]
    })

    Methods

    // All available params
    params.all()
    // -> { id: '13', name: 'Bob', age: '13', hobbies: ['skydiving', 'football', 'photographing'], address: { country: 'US', street: '261 West' }, contacts: [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }] }
     
    // Only selected params
    params.permit('name', 'age').value()
    // -> { name: 'Bob', age: '13' }
     
    params.permit('id', 'name', {hobbies: []}).value()
    // -> { id: '13', name: 'Bob', hobbies: ['skydiving', 'football', 'photographing'] }
     
    params.permit('id', 'name', {contacts: []}).value()
    // -> { id: '13', name: 'Bob', contacts: [] }
     
    params.permit('id', 'name', {contacts: ['type', 'value']}).value()
    // -> { id: '13', name: 'Bob', contacts: [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }] }
     
    // All params of a sub-object
    params.require('address').all()
    // -> { country: 'US', street: '261 West' }
     
    // All params of a sub-object
    params.require('contacts').permit('type', 'value').value()
    // -> [{ type: 'e-mail', value: 'bob@random.rnd' }, { type: 'mobile', value: '+123987456' }]

    Errors

    // ParameterMissingError
    try {
      params.require('missingKey')
    } catch(err) {
      err instanceof ParameterMissingError // -> true
      err instanceof Error // -> true
    }

    Look Rails Strong Parameters specification for more information.

    Contributing

    Please follow Contributing

    Install

    npm i strong-params

    DownloadsWeekly Downloads

    206

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    31.4 kB

    Total Files

    17

    Last publish

    Collaborators

    • ssowonny