Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    node-async-routerpublic

    node-async-router

    node-async-router is a patched version of pillarjs/router that adds support for ES2016/ES7 async functions.

    This module is not a compiler, transpiler, shim, polyfill, or anything else that modifies your code or runtime environment, so if you want to use async functions you will still need to use something like Babel.

    Quick Example (Express)

    var app = require('express')(),
        router = require('node-async-router')();
     
    router.get('/users/:username', async function(req, res, next) {
        var user = await UserModel.find({ username: req.params.username });
        res.json(user);
    });
     
    app.use(router);
     
    app.listen(3000);

    Installation

    $ npm install node-async-router
    

    Documentation

    Overview

    node-async-router is a thin wrapper around the router module. Aside from monkey-patching in support for async functions as middleware, it retains 100% compatible with its preexisting API (the bulk of the work is still actually done by the wrapped router module).

    Features

    As was previously alluded to, node-async-router is designed to enable async functions to be used within router's existing API, and then it gets out of the way.

    At present, the following router APIs are extended to support async functions:

    The API surface is well tested, but please do report any issues, however!

    Error Handling

    Error handling behaves the same as in the router module, with the exception that if an async function is used and it resolves to a rejection (error), then that error is automatically passed on to next().

    Example:

    var app = require('express')(),
        router = require('node-async-router')();
     
    router.get('/500-me', async function(req, res, next) {
        var err = new Error();
     
        // option 1: use next()
        return next(err);
     
        // option 2: throw it
        throw err;
     
        // option 3: await on a rejected promise (without catching it)
        var user = await somePromiseThatWillBeRejected();
    });
     
    router.use(function(err, req, res, next) {
        console.error('Unhandled error:', err);
        res.status(500).send('My bad!');
    });
     
    app.use(router);
     
    app.listen(3000);

    License

    MIT

    install

    npm i node-async-router

    Downloadsweekly downloads

    152

    version

    0.0.2

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar