Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xpepermint/koa-strong-params
Rails-style implementation of strong parameters for Koa
https://github.com/xpepermint/koa-strong-params
Last synced: 5 days ago
JSON representation
Rails-style implementation of strong parameters for Koa
- Host: GitHub
- URL: https://github.com/xpepermint/koa-strong-params
- Owner: xpepermint
- License: mit
- Created: 2014-08-17T14:38:52.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-06-07T10:04:31.000Z (5 months ago)
- Last Synced: 2024-10-01T15:53:10.405Z (about 1 month ago)
- Language: JavaScript
- Size: 148 KB
- Stars: 6
- Watchers: 2
- Forks: 20
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# koa-strong-params
![Build Status](https://travis-ci.org/xpepermint/koa-strong-params.svg?branch=master) [![NPM version](https://badge.fury.io/js/koa-strong-params.svg)](http://badge.fury.io/js/koa-strong-params) [![Dependency Status](https://gemnasium.com/xpepermint/koa-strong-params.svg)](https://gemnasium.com/xpepermint/koa-strong-params)
Rails-style implementation of strong parameters for [Koa](https://github.com/koajs/koa). The middleware adds the `this.params` object to the [Koa context](http://koajs.com/#context) which returns an object, built from `query string` and `request body` data. The returned object has some useful methods allows for data `requiring` and `filtering`.
You should consider using [koa-qs](https://www.npmjs.org/package/koa-qs) and [koa-bodyparser](https://www.npmjs.org/package/koa-bodyparser) packages together with `koa-strong-params`.
## Installation
Install the [npm](https://www.npmjs.org/package/koa-strong-params) package.
```
npm install koa-strong-params --save
```Attach the middleware.
```js
var koa = require('koa');
var params = require('koa-strong-params');
var app = koa();
app.use(params());
```## Example
```js
var koa = require('koa');
var params = require('koa-strong-params');
var bodyparser = require('koa-bodyparser');
var qs = require('koa-qs')
var app = koa();
qs(app); // required for nested query string objects
app.use(bodyparser()); // required for params to include request body objects
app.use(params());
app.use(function *() {// all available params
this.body = this.params.all();
// -> { id: '13', name: 'Bob', age: '13', email: '[email protected]', address: { country: 'US', street: '261 West' }}// only selected params
this.body = this.params.only('name', 'age');
// -> { name: 'Bob', age: '13' }// all params except those provided
this.body = this.params.except('name', 'id', 'address');
// -> { id: '13', age: '13', email: '[email protected]' }// all params of a sub-object
this.body = this.params.require('address').all();
// -> { country: 'US', street: '261 West' }// only selected params + some merged attributes
this.body = this.params.merge({ badge: 'coder' }).only('name');
// -> { name: 'Bob', badge: 'coder' }});
app.listen(3001);
```