express-async-router
express-async-router
is an Express Router wrapper which automatically manage Promise
.
Getting Started
express-async-router
works exactly as Express Router.
If you're not family with Express Router API, please see Router documentation.
Installation
express-async-router
can be installed using NPM:
$ npm install express-async-router --save
Usage
First import express-async-router
in your project:
var AsyncRouter = AsyncRouter;
Then instanciate AsyncRouter
:
var router = ;
You're ready to use AsyncRouter
the same way as Express Router but without worrying about Promise
.
router; router; router;
Options
express-async-router
works exactly as Express Router so it can take the same options plus some additionnals to manage how request is sent.
By default, express-async-router
sends the Promise result by using res.send(result)
if headers was not already sent. You can customize this behavior by passing sender
option when creating AsyncRouter
.
options.send
Type: boolean
| Default: true
If set to false
, AsyncRouter
will never try to send Promise
result.
options.sender
Type: (req, res, value) => Thenable
| Default: function (req, res, value) { res.send(value); }
If set, it will override the default AsyncRouter
sender
function.
Examples:
var router = ;
Or
var router = ; { res; } router;
send
Promise handling
express-async-router
automatically handles Promises when it can.
param(name: string, handler: (req, res, param) => Thenable)
A special Router.param
override which automatically calls next
function when returned Promise
resolves.
If returned Promise
rejects, rejected Error
is transfered to next
function.
If result is not a Promise
, next
function is immediatelly called.
Example:
router;
[method](name: string, handler: (req, res) => Thenable)
A Router[method]
wrapper which automatically calls next
function when returned Promise
resolves.
If returned Promise
rejects, rejected Error
is transfered to next
function.
If result is not a Promise
, next
function is immediatelly called.
Examples:
router; router;
use(...handlers[]: (req, res) => Thenable)
use(name: string | RegExp | string[], ...handlers[]: (req, res) => Thenable)
A Router.use
wrapper which automatically calls next
function when returned Promise
resolves.
If returned Promise
rejects, rejected Error
is transfered to next
function.
If result is not a Promise
, next
function is immediatelly called.
NOTE: If you declare 3 arguments in your function, next
will only be called when an error occured.
Examples:
router; router; router;
use(...handlers[]: (err, req, res, next) => Thenable)
use(name: string | RegExp | string[], ...handlers[]: (err, req, res, next) => Thenable)
A Router.use
wrapper for Error handling which automatically calls next
function when returned Promise
resolves.
If returned Promise
rejects, rejected Error
is transfered to next
function.
If result is not a Promise
, next
function is immediatelly called.
WARNING: You must declare the 4 arguments to your function to be recognized as an Error handler. This is for compatibility with Native Middlewares.
Examples:
router; router; router;
Contribute
Install Global Dependencies
express-router-async
needs some development dependencies:
$ npm install -g grunt-cli tsd
Install Project dependencies
$ npm install
Build project
$ grunt