express-ctx
express
context based on async_hooks
without getting lost context
Install
npm i express-ctx
Usage
const express = require('express');
const { middleware, setValue, getValue } = require('express-ctx');
const usersRepository = require('./usersRepository');
const app = express();
app.use(middleware);
app.use((req, res, next) => {
usersRepository.findOne(req.session.id).then(user => {
setValue('user', user);
next();
});
});
app.use((req, res, next) => {
const user = getValue('user');
res.json(user);
});
Other libs
As for now such libraries as express-http-context
and express-cls-hooked
do not bind req
and res
to namespace, so there could be troubles with middlewares based on emitting events. So this lib binds.