Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
vellotis committed Aug 18, 2016
1 parent 4e61c21 commit a734550
Showing 1 changed file with 41 additions and 12 deletions.
53 changes: 41 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

![Build Status](https://travis-ci.org/ssowonny/strong-params.svg?branch=master) [![NPM version](https://badge.fury.io/js/strong-params.svg)](http://badge.fury.io/js/strong-params)

Rails-style implementation of strong parameters (forked from [koa-strong-params](https://github.com/xpepermint/koa-strong-params)). It supports [Express](http://expressjs.com/), [Koa](https://github.com/koajs/koa) and also can be used as standalone. The middleware adds the `parameters` object to the [Express request](http://expressjs.com/4x/api.html#req) (or `this.params` for [Koa context](http://koajs.com/#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`.
Rails-style implementation of strong parameters. It supports [Express](http://expressjs.com/), [Koa](https://github.com/koajs/koa) and also can be used as standalone. The middleware adds the `parameters` object to the [Express request](http://expressjs.com/4x/api.html#req) (or `this.params` for [Koa context](http://koajs.com/#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](https://github.com/xpepermint/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

Expand Down Expand Up @@ -54,34 +58,59 @@ app.use(function *() {
##### Standalone

```js
var strongify = require('strong-params').strongify
var params = strongify({ key: 'value' })
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: '[email protected]'
}, {
type: 'mobile',
value: '+123987456'
}
]
})
```

### Methods

```js
// All available params
params.all()
// -> { id: '13', name: 'Bob', age: '13', email: '[email protected]', address: { country: 'US', street: '261 West' }}
// -> { id: '13', name: 'Bob', age: '13', hobbies: ['skydiving', 'football', 'photographing'], address: { country: 'US', street: '261 West' }, contacts: [{ type: 'e-mail', value: '[email protected]' }, { type: 'mobile', value: '+123987456' }] }

// Only selected params (also has `only` as alias for `permit`)
params.permit('name', 'age')
// Only selected params
params.permit('name', 'age').value()
// -> { name: 'Bob', age: '13' }

// All params except those provided
params.except('name', 'id', 'address')
// -> { id: '13', age: '13', email: '[email protected]' }
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: '[email protected]' }, { type: 'mobile', value: '+123987456' }] }

// All params of a sub-object
params.require('address').all()
// -> { country: 'US', street: '261 West' }

// Only selected params + some merged attributes
params.merge({ badge: 'coder' }).permit('name')
// -> { name: 'Bob', badge: 'coder' }
// All params of a sub-object
params.require('contacts').permit('type', 'value').value()
// -> [{ type: 'e-mail', value: '[email protected]' }, { type: 'mobile', value: '+123987456' }]
```

Look [Rails Strong Parameters specification](http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters) for more information.

## Contributing

Please follow [Contributing](./CONTRIBUTING.md)

0 comments on commit a734550

Please sign in to comment.