项目作者: yourtion

项目描述 :
Generator function and Async function to be used as middlewares in express like koa.
高级语言: JavaScript
项目地址: git://github.com/yourtion/express-coroutine.git
创建时间: 2017-02-07T01:52:30Z
项目社区:https://github.com/yourtion/express-coroutine

开源协议:MIT License

下载


NPM version
build status
Test coverage
David deps
node version
npm download
npm license
Greenkeeper badge

express-coroutine

Generator function and Async function to be used as middlewares in express like koa. ( use lei-coroutine )

Installation

  1. npm install express-coroutine --save

Usage

Init express

  1. const express = require('express-coroutine')(require('express'));
  2. const app = express();

Init router

  1. const express = require('express-coroutine')(require('express'));
  2. const app = express();
  3. const router = new express.Router();
  4. app.use(router);
  5. router.get('/', function* (req, res) {
  6. res.send('it works!');
  7. });
  8. // also async function
  9. router.get('/', async function (req, res) {
  10. res.send('it works!');
  11. });

Write your express routes by using generator functions as middlewares.

  1. const express = require('express-coroutine')(require('express'));
  2. const app = express();
  3. app.get('/user/:id', function* (req, res) {
  4. const user = yield User.findById(req.params.id);
  5. res.send(user);
  6. })
  7. app.get('/error', function* (req, res) {
  8. throw new Error('Bang!');
  9. });
  10. // also async function
  11. app.get('/user2/:id', async function* (req, res) {
  12. const user = await User.findById(req.params.id);
  13. res.send(user);
  14. });
  15. app.listen(8000);

You can also define multiple generator functions just the express way.

  1. const fn = function (req, res, next) {
  2. return new Promise((resolve, reject) => {
  3. if (req.params.user !== 'a') return reject(new Error('Bang!'));
  4. resolve('a');
  5. });
  6. };
  7. const middleware = function* (req, res, next) {
  8. yield fn(req, res, next);
  9. };
  10. const middleware2 = async function (req, res, next) {
  11. await fn(req, res, next);
  12. next();
  13. };
  14. app.get('/:user', middleware, function* (req, res) {
  15. res.send('it works!');
  16. });
  17. app.get('/:user', middleware2, async function (req, res) {
  18. res.send('it works!');
  19. });

More detail demo can be found in test.js

Get coroutine

  1. const coroutine = require('express-coroutine').coroutine;