1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yourtion-express-coroutine

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Версия NPM Статус сборки Объем тестового покрытия Зависимости David Версия Node.js Скачиваемость NPM Лицензия NPM Greenkeeper badge

express-coroutine

Функция-генератор и асинхронная функция для использования в качестве middleware в Express, аналогично Koa. (использует lei-coroutine)

Установка

npm install express-coroutine --save

Использование

Инициализация Express

const express = require('express-coroutine')(require('express'));
const app = express();

Инициализация маршрута

const express = require('express-coroutine')(require('express'));
const app = express();
const router = new express.Router();
app.use(router);

router.get('/', function*(req, res) {
  res.send('работает!');
});
```## Получение корутин

```javascript
const coroutine = require('express-coroutine').coroutine;

Константа app инициализируется с использованием библиотеки Express:

const app = express();

Для маршрутов /user/:id и /user2/:id используется генераторная функция, которая получает пользователя по его ID и отправляет его в ответ:

app.get('/user/:id', function*(req, res) {
  const user = yield User.findById(req.params.id);
  res.send(user);
});

Для маршрута /error генератор выбрасывает ошибку:

app.get('/error', function*(req, res) {
  throw new Error('Bang!');
});

Асинхронная версия маршрута /user2/:id использует ключевое слово await, чтобы получить пользователя по его ID и отправить его в ответ:

app.get('/user2/:id', async function(req, res) {
  const user = await User.findById(req.params.id);
  res.send(user);
});

Слушатель порта запускается следующей командой:

app.listen(8000);

Вы также можете определять несколько генераторных функций аналогично тому, как это делается в Express:

const fn = function(req, res, next) {
  return new Promise((resolve, reject) => {
    if (req.params.user !== 'a') return reject(new Error('Bang!'));
    resolve('a');
  });
};

const middleware = function*(req, res, next) {
  yield fn(req, res, next);
};

const middleware2 = async function(req, res, next) {
  await fn(req, res, next);
  next();
};
```app.get('/:user', middleware, function*(req, res) {
  res.send('работает!');
});

app.get('/:user', middleware2, async function(req, res) {
  res.send('работает!');
});

Более подробный пример можно найти в файле test.js.

Получение корутина

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

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

В Express использование Generator-методов, как в Koa. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yourtion-express-coroutine.git
git@api.gitlife.ru:oschina-mirror/yourtion-express-coroutine.git
oschina-mirror
yourtion-express-coroutine
yourtion-express-coroutine
master